diff --git a/android/app/src/main/kotlin/com/edde746/plezy/exoplayer/ExoPlayerCore.kt b/android/app/src/main/kotlin/com/edde746/plezy/exoplayer/ExoPlayerCore.kt index fac7b8c1..1b5eb9be 100644 --- a/android/app/src/main/kotlin/com/edde746/plezy/exoplayer/ExoPlayerCore.kt +++ b/android/app/src/main/kotlin/com/edde746/plezy/exoplayer/ExoPlayerCore.kt @@ -1253,6 +1253,7 @@ class ExoPlayerCore(private val activity: Activity) : Player.Listener { abandonAudioFocus() audioManager = null + exoPlayer?.clearVideoSurface() exoPlayer?.removeListener(this) exoPlayer?.release() exoPlayer = null @@ -1265,9 +1266,14 @@ class ExoPlayerCore(private val activity: Activity) : Player.Listener { contentView.viewTreeObserver.removeOnGlobalLayoutListener(listener) } + // Post view removal to next frame to avoid SurfaceControl race on render thread val contentView = activity.findViewById(android.R.id.content) - surfaceContainer?.let { contentView.removeView(it) } - subtitleView?.let { contentView.removeView(it) } + val container = surfaceContainer + val subtitle = subtitleView + contentView.post { + container?.let { contentView.removeView(it) } + subtitle?.let { contentView.removeView(it) } + } surfaceContainer = null surfaceView = null subtitleView = null diff --git a/android/app/src/main/kotlin/com/edde746/plezy/mpv/MpvPlayerCore.kt b/android/app/src/main/kotlin/com/edde746/plezy/mpv/MpvPlayerCore.kt index 3361b0c0..9d913701 100644 --- a/android/app/src/main/kotlin/com/edde746/plezy/mpv/MpvPlayerCore.kt +++ b/android/app/src/main/kotlin/com/edde746/plezy/mpv/MpvPlayerCore.kt @@ -723,8 +723,12 @@ class MpvPlayerCore(private val activity: Activity) : contentView.viewTreeObserver.removeOnGlobalLayoutListener(listener) } + // Post view removal to next frame to avoid SurfaceControl race on render thread val contentView = activity.findViewById(android.R.id.content) - surfaceContainer?.let { contentView.removeView(it) } + val container = surfaceContainer + contentView.post { + container?.let { contentView.removeView(it) } + } surfaceContainer = null surfaceView = null