[MatrixSDK] makes sure to release FFI objects from RustMatrixRoom by calling close
This commit is contained in:
parent
c7519149fd
commit
b1c116b883
4 changed files with 10 additions and 2 deletions
|
|
@ -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) }
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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())
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -87,4 +87,6 @@ class FakeMatrixRoom(
|
||||||
delay(100)
|
delay(100)
|
||||||
return Result.success(Unit)
|
return Result.success(Unit)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun close() = Unit
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue