From c3f47701084935625d984e0b2dc0867bb0ef4800 Mon Sep 17 00:00:00 2001 From: Peter Cai Date: Thu, 12 May 2022 17:09:58 -0400 Subject: [PATCH] Execute SEService initialization on the handler thread This (hopefully) eliminates a race condition where the connected listenr is called before the service variable is assigned. --- .../java/im/angry/openeuicc/core/EuiccChannelManager.kt | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/im/angry/openeuicc/core/EuiccChannelManager.kt b/app/src/main/java/im/angry/openeuicc/core/EuiccChannelManager.kt index 4c2c0d9..4ce7df8 100644 --- a/app/src/main/java/im/angry/openeuicc/core/EuiccChannelManager.kt +++ b/app/src/main/java/im/angry/openeuicc/core/EuiccChannelManager.kt @@ -34,9 +34,11 @@ class EuiccChannelManager(private val context: Context) { private val handler = Handler(HandlerThread("EuiccChannelManager").also { it.start() }.looper) private suspend fun connectSEService(): SEService = suspendCoroutine { cont -> - var service: SEService? = null - service = SEService(context, { handler.post(it) }) { - cont.resume(service!!) + handler.post { + var service: SEService? = null + service = SEService(context, { handler.post(it) }) { + cont.resume(service!!) + } } }