Browse Source

Performance : call roomFactory.destroy()

pull/3186/head
ganfra 2 months ago
parent
commit
f08d30bb62
  1. 3
      libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClient.kt
  2. 3
      libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RustRoomFactory.kt

3
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 roomDirectoryService(): RoomDirectoryService = roomDirectoryService
override fun close() { override fun close() {
appCoroutineScope.launch {
roomFactory.destroy()
}
sessionCoroutineScope.cancel() sessionCoroutineScope.cancel()
clientDelegateTaskHandle?.cancelAndDestroy() clientDelegateTaskHandle?.cancelAndDestroy()
notificationSettingsService.destroy() notificationSettingsService.destroy()

3
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 io.element.android.services.toolbox.api.systemclock.SystemClock
import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.NonCancellable
import kotlinx.coroutines.sync.Mutex import kotlinx.coroutines.sync.Mutex
import kotlinx.coroutines.sync.withLock import kotlinx.coroutines.sync.withLock
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
@ -89,7 +90,7 @@ class RustRoomFactory(
} }
suspend fun destroy() { suspend fun destroy() {
withContext(dispatcher) { withContext(NonCancellable + dispatcher) {
mutex.withLock { mutex.withLock {
Timber.d("Destroying room factory") Timber.d("Destroying room factory")
cache.evictAll() cache.evictAll()

Loading…
Cancel
Save