From f08d30bb62d769eb71223b918379201f83a6e38d Mon Sep 17 00:00:00 2001 From: ganfra Date: Wed, 17 Jul 2024 17:23:15 +0200 Subject: [PATCH] Performance : call roomFactory.destroy() --- .../element/android/libraries/matrix/impl/RustMatrixClient.kt | 3 +++ .../android/libraries/matrix/impl/room/RustRoomFactory.kt | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClient.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClient.kt index 13eb506b0a..ad37b0c917 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClient.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClient.kt @@ -490,6 +490,9 @@ class RustMatrixClient( override fun roomDirectoryService(): RoomDirectoryService = roomDirectoryService override fun close() { + appCoroutineScope.launch { + roomFactory.destroy() + } sessionCoroutineScope.cancel() clientDelegateTaskHandle?.cancelAndDestroy() notificationSettingsService.destroy() diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RustRoomFactory.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RustRoomFactory.kt index 63d2912a42..b559aacf86 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RustRoomFactory.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RustRoomFactory.kt @@ -31,6 +31,7 @@ import io.element.android.libraries.sessionstorage.api.SessionData import io.element.android.services.toolbox.api.systemclock.SystemClock import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.ExperimentalCoroutinesApi +import kotlinx.coroutines.NonCancellable import kotlinx.coroutines.sync.Mutex import kotlinx.coroutines.sync.withLock import kotlinx.coroutines.withContext @@ -89,7 +90,7 @@ class RustRoomFactory( } suspend fun destroy() { - withContext(dispatcher) { + withContext(NonCancellable + dispatcher) { mutex.withLock { Timber.d("Destroying room factory") cache.evictAll()