diff --git a/readium/adapters/exoplayer/audio/src/main/java/org/readium/adapter/exoplayer/audio/ExoPlayerEngine.kt b/readium/adapters/exoplayer/audio/src/main/java/org/readium/adapter/exoplayer/audio/ExoPlayerEngine.kt index d7dfcda84b..f8c5a641bf 100644 --- a/readium/adapters/exoplayer/audio/src/main/java/org/readium/adapter/exoplayer/audio/ExoPlayerEngine.kt +++ b/readium/adapters/exoplayer/audio/src/main/java/org/readium/adapter/exoplayer/audio/ExoPlayerEngine.kt @@ -179,6 +179,14 @@ public class ExoPlayerEngine private constructor( private val _playback: MutableStateFlow = MutableStateFlow(exoPlayer.playback) + private val sessionPlayer = object : + ForwardingPlayer(exoPlayer) { + + override fun release() { + // This object does not own the ExoAudiobookPlayer instance, do not close it. + } + } + init { coroutineScope.launch { val positionRefreshDelay = (1.0 / configuration.positionRefreshRate.value).seconds @@ -227,7 +235,7 @@ public class ExoPlayerEngine private constructor( } override fun asPlayer(): Player { - return exoPlayer + return sessionPlayer } override fun submitPreferences(preferences: ExoPlayerPreferences) { diff --git a/readium/navigators/media/audio/src/main/java/org/readium/navigator/media/audio/AudioEngine.kt b/readium/navigators/media/audio/src/main/java/org/readium/navigator/media/audio/AudioEngine.kt index 67be3ebec8..83f2203c49 100644 --- a/readium/navigators/media/audio/src/main/java/org/readium/navigator/media/audio/AudioEngine.kt +++ b/readium/navigators/media/audio/src/main/java/org/readium/navigator/media/audio/AudioEngine.kt @@ -32,22 +32,22 @@ public interface AudioEngine, public sealed class State { - public object Ready : MediaNavigator.State.Ready + public data object Ready : MediaNavigator.State.Ready - public object Ended : MediaNavigator.State.Ended + public data object Ended : MediaNavigator.State.Ended public data class Failure(val error: Error) : MediaNavigator.State.Failure }