From 325feb56375ea89866fe53e7d7d0efdd4a3fa6b2 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Fri, 27 Oct 2023 17:50:24 +0200 Subject: [PATCH] It seems that annotating the lambda makes the thread check works --- app/src/main/java/org/linphone/core/CoreContext.kt | 8 ++++++-- .../org/linphone/telecom/TelecomCallControlCallback.kt | 2 ++ app/src/main/java/org/linphone/ui/call/model/CallModel.kt | 1 + 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/linphone/core/CoreContext.kt b/app/src/main/java/org/linphone/core/CoreContext.kt index 50757afa2..4f018075e 100644 --- a/app/src/main/java/org/linphone/core/CoreContext.kt +++ b/app/src/main/java/org/linphone/core/CoreContext.kt @@ -214,14 +214,18 @@ class CoreContext @UiThread constructor(val context: Context) : HandlerThread("C } @AnyThread - fun postOnCoreThread(lambda: (core: Core) -> Unit) { + fun postOnCoreThread( + @WorkerThread lambda: (core: Core) -> Unit + ) { coreThread.post { lambda.invoke(core) } } @AnyThread - fun postOnMainThread(lambda: () -> Unit) { + fun postOnMainThread( + @UiThread lambda: () -> Unit + ) { mainThread.post { lambda.invoke() } diff --git a/app/src/main/java/org/linphone/telecom/TelecomCallControlCallback.kt b/app/src/main/java/org/linphone/telecom/TelecomCallControlCallback.kt index ee9608718..2ee2bb0e7 100644 --- a/app/src/main/java/org/linphone/telecom/TelecomCallControlCallback.kt +++ b/app/src/main/java/org/linphone/telecom/TelecomCallControlCallback.kt @@ -20,6 +20,7 @@ package org.linphone.telecom import android.telecom.DisconnectCause +import androidx.annotation.WorkerThread import androidx.core.telecom.CallAttributesCompat import androidx.core.telecom.CallControlResult import androidx.core.telecom.CallControlScope @@ -48,6 +49,7 @@ class TelecomCallControlCallback constructor( private var availableEndpoints: List = arrayListOf() private val callListener = object : CallListenerStub() { + @WorkerThread override fun onStateChanged(call: Call, state: Call.State?, message: String) { Log.i("$TAG Call [${call.remoteAddress.asStringUriOnly()}] state changed [$state]") if (state == Call.State.Connected) { diff --git a/app/src/main/java/org/linphone/ui/call/model/CallModel.kt b/app/src/main/java/org/linphone/ui/call/model/CallModel.kt index 973b31be0..fa00fb86b 100644 --- a/app/src/main/java/org/linphone/ui/call/model/CallModel.kt +++ b/app/src/main/java/org/linphone/ui/call/model/CallModel.kt @@ -47,6 +47,7 @@ class CallModel @WorkerThread constructor(val call: Call) { val contact = MutableLiveData() private val callListener = object : CallListenerStub() { + @WorkerThread override fun onStateChanged(call: Call, state: Call.State, message: String) { this@CallModel.state.postValue(LinphoneUtils.callStateToString(state)) isPaused.postValue(LinphoneUtils.isCallPaused(state))