[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 = {
Timber.v("OnDestroy")
inputs.room.close()
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.timeline.MatrixTimeline
import kotlinx.coroutines.flow.Flow
import java.io.Closeable
interface MatrixRoom {
interface MatrixRoom: Closeable {
val roomId: RoomId
val name: String?
val bestName: String

View File

@@ -17,11 +17,11 @@
package io.element.android.libraries.matrix.impl.room
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.RoomId
import io.element.android.libraries.matrix.api.room.MatrixRoom
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.flow.Flow
import kotlinx.coroutines.flow.filter
@@ -62,6 +62,10 @@ class RustMatrixRoom(
coroutineDispatchers = coroutineDispatchers
)
}
override fun close() {
innerRoom.destroy()
slidingSyncRoom.destroy()
}
override val roomId = RoomId(innerRoom.id())

View File

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