davidliu
Committed by GitHub

Stop listening on SurfaceTextureHelperCloser before disposing (#171)

  1 +package io.livekit.android.memory
  2 +
  3 +import org.webrtc.SurfaceTextureHelper
  4 +import java.io.Closeable
  5 +
  6 +internal class SurfaceTextureHelperCloser(private val surfaceTextureHelper: SurfaceTextureHelper) : Closeable {
  7 + private var isClosed = false
  8 + override fun close() {
  9 + if (!isClosed) {
  10 + isClosed = true
  11 + surfaceTextureHelper.stopListening()
  12 + surfaceTextureHelper.dispose()
  13 + }
  14 + }
  15 +}
@@ -9,6 +9,7 @@ import dagger.assisted.Assisted @@ -9,6 +9,7 @@ import dagger.assisted.Assisted
9 import dagger.assisted.AssistedFactory 9 import dagger.assisted.AssistedFactory
10 import dagger.assisted.AssistedInject 10 import dagger.assisted.AssistedInject
11 import io.livekit.android.memory.CloseableManager 11 import io.livekit.android.memory.CloseableManager
  12 +import io.livekit.android.memory.SurfaceTextureHelperCloser
12 import io.livekit.android.room.DefaultsManager 13 import io.livekit.android.room.DefaultsManager
13 import io.livekit.android.room.track.video.Camera1CapturerWithSize 14 import io.livekit.android.room.track.video.Camera1CapturerWithSize
14 import io.livekit.android.room.track.video.Camera2CapturerWithSize 15 import io.livekit.android.room.track.video.Camera2CapturerWithSize
@@ -218,7 +219,11 @@ constructor( @@ -218,7 +219,11 @@ constructor(
218 name = name, 219 name = name,
219 rtcTrack = rtcTrack 220 rtcTrack = rtcTrack
220 ) 221 )
221 - track.closeableManager.registerResource(rtcTrack) { surfaceTextureHelper.dispose() } 222 +
  223 + track.closeableManager.registerResource(
  224 + rtcTrack,
  225 + SurfaceTextureHelperCloser(surfaceTextureHelper)
  226 + )
222 return track 227 return track
223 } 228 }
224 internal fun createTrack( 229 internal fun createTrack(
@@ -254,7 +259,10 @@ constructor( @@ -254,7 +259,10 @@ constructor(
254 rtcTrack = rtcTrack 259 rtcTrack = rtcTrack
255 ) 260 )
256 261
257 - track.closeableManager.registerResource(rtcTrack) { surfaceTextureHelper.dispose() } 262 + track.closeableManager.registerResource(
  263 + rtcTrack,
  264 + SurfaceTextureHelperCloser(surfaceTextureHelper)
  265 + )
258 266
259 return track 267 return track
260 } 268 }