diff --git a/app/src/main/java/org/fcitx/fcitx5/android/core/FcitxLifecycle.kt b/app/src/main/java/org/fcitx/fcitx5/android/core/FcitxLifecycle.kt index de3d2fb1..4ea37fe8 100644 --- a/app/src/main/java/org/fcitx/fcitx5/android/core/FcitxLifecycle.kt +++ b/app/src/main/java/org/fcitx/fcitx5/android/core/FcitxLifecycle.kt @@ -8,11 +8,11 @@ import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.SupervisorJob import kotlinx.coroutines.cancelChildren import kotlinx.coroutines.launch +import kotlinx.coroutines.suspendCancellableCoroutine import java.util.concurrent.ConcurrentLinkedQueue import kotlin.coroutines.Continuation import kotlin.coroutines.CoroutineContext import kotlin.coroutines.resume -import kotlin.coroutines.suspendCoroutine class FcitxLifecycleRegistry : FcitxLifecycle { @@ -138,9 +138,8 @@ private class AtStateHelper(val lifecycle: FcitxLifecycle, val state: FcitxLifec private var continuation: Continuation? = null suspend fun run(block: suspend CoroutineScope.() -> T): T { - suspendCoroutine { continuation = it } + suspendCancellableCoroutine { continuation = it } lifecycle.removeObserver(observer) return block(lifecycle.lifecycleScope) } } - diff --git a/app/src/main/java/org/fcitx/fcitx5/android/input/bar/KawaiiBarComponent.kt b/app/src/main/java/org/fcitx/fcitx5/android/input/bar/KawaiiBarComponent.kt index ab15c201..eb963d1d 100644 --- a/app/src/main/java/org/fcitx/fcitx5/android/input/bar/KawaiiBarComponent.kt +++ b/app/src/main/java/org/fcitx/fcitx5/android/input/bar/KawaiiBarComponent.kt @@ -25,6 +25,7 @@ import kotlinx.coroutines.async import kotlinx.coroutines.awaitAll import kotlinx.coroutines.delay import kotlinx.coroutines.launch +import kotlinx.coroutines.suspendCancellableCoroutine import org.fcitx.fcitx5.android.R import org.fcitx.fcitx5.android.core.CapabilityFlag import org.fcitx.fcitx5.android.core.CapabilityFlags @@ -76,13 +77,12 @@ import splitties.views.dsl.core.lParams import splitties.views.dsl.core.matchParent import java.util.concurrent.Executor import kotlin.coroutines.resume -import kotlin.coroutines.suspendCoroutine +import kotlin.math.PI import kotlin.math.abs import kotlin.math.atan2 import kotlin.math.cos import kotlin.math.hypot import kotlin.math.min -import kotlin.math.PI import kotlin.math.sin class KawaiiBarComponent : UniqueViewComponent(), @@ -538,7 +538,7 @@ class KawaiiBarComponent : UniqueViewComponent( @RequiresApi(Build.VERSION_CODES.R) private suspend fun inflateInlineContentView(suggestion: InlineSuggestion): InlineContentView? { - return suspendCoroutine { c -> + return suspendCancellableCoroutine { c -> // callback view might be null suggestion.inflate(context, suggestionSize, directExecutor) { v -> c.resume(v)