[MatrixSDK] makes sure to release FFI objects from RustMatrixRoom by calling close

This commit is contained in:
ganfra 2023-03-09 20:22:16 +01:00
parent c7519149fd
commit b1c116b883
4 changed files with 10 additions and 2 deletions

View file

@ -71,6 +71,7 @@ class RoomFlowNode @AssistedInject constructor(
}, },
onDestroy = { onDestroy = {
Timber.v("OnDestroy") Timber.v("OnDestroy")
inputs.room.close()
plugins<LifecycleCallback>().forEach { it.onFlowReleased(inputs.room) } plugins<LifecycleCallback>().forEach { it.onFlowReleased(inputs.room) }
} }
) )

View file

@ -20,8 +20,9 @@ import io.element.android.libraries.matrix.api.core.EventId
import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.core.RoomId
import io.element.android.libraries.matrix.api.timeline.MatrixTimeline import io.element.android.libraries.matrix.api.timeline.MatrixTimeline
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow
import java.io.Closeable
interface MatrixRoom { interface MatrixRoom: Closeable {
val roomId: RoomId val roomId: RoomId
val name: String? val name: String?
val bestName: String val bestName: String

View file

@ -17,11 +17,11 @@
package io.element.android.libraries.matrix.impl.room package io.element.android.libraries.matrix.impl.room
import io.element.android.libraries.core.coroutine.CoroutineDispatchers import io.element.android.libraries.core.coroutine.CoroutineDispatchers
import io.element.android.libraries.matrix.impl.timeline.RustMatrixTimeline
import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.core.EventId
import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.core.RoomId
import io.element.android.libraries.matrix.api.room.MatrixRoom import io.element.android.libraries.matrix.api.room.MatrixRoom
import io.element.android.libraries.matrix.api.timeline.MatrixTimeline import io.element.android.libraries.matrix.api.timeline.MatrixTimeline
import io.element.android.libraries.matrix.impl.timeline.RustMatrixTimeline
import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.filter import kotlinx.coroutines.flow.filter
@ -62,6 +62,10 @@ class RustMatrixRoom(
coroutineDispatchers = coroutineDispatchers coroutineDispatchers = coroutineDispatchers
) )
} }
override fun close() {
innerRoom.destroy()
slidingSyncRoom.destroy()
}
override val roomId = RoomId(innerRoom.id()) override val roomId = RoomId(innerRoom.id())

View file

@ -87,4 +87,6 @@ class FakeMatrixRoom(
delay(100) delay(100)
return Result.success(Unit) return Result.success(Unit)
} }
override fun close() = Unit
} }