From 2a0624f8608ef2e71ecf1dbe324301bba5793a77 Mon Sep 17 00:00:00 2001 From: Alexander Capehart Date: Wed, 28 Feb 2024 22:58:35 -0700 Subject: [PATCH] playback: fix more state restore issues They just keep coming. I hate how complicated this system is. --- .../auxio/playback/service/PlaybackServiceFragment.kt | 3 ++- .../auxio/playback/state/PlaybackStateHolder.kt | 2 +- .../auxio/playback/state/PlaybackStateManager.kt | 11 ++++++----- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/org/oxycblt/auxio/playback/service/PlaybackServiceFragment.kt b/app/src/main/java/org/oxycblt/auxio/playback/service/PlaybackServiceFragment.kt index 8b06a8a78..32e60cf7d 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/service/PlaybackServiceFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/service/PlaybackServiceFragment.kt @@ -470,8 +470,9 @@ constructor( ack?.let { playbackManager.ack(this, it) } } - override fun reset() { + override fun reset(ack: StateAck.NewPlayback) { player.setMediaItems(emptyList()) + playbackManager.ack(this, ack) } // --- PLAYER OVERRIDES --- diff --git a/app/src/main/java/org/oxycblt/auxio/playback/state/PlaybackStateHolder.kt b/app/src/main/java/org/oxycblt/auxio/playback/state/PlaybackStateHolder.kt index 3cf5f44da..259d5ab97 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/state/PlaybackStateHolder.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/state/PlaybackStateHolder.kt @@ -155,7 +155,7 @@ interface PlaybackStateHolder { fun applySavedState(parent: MusicParent?, rawQueue: RawQueue, ack: StateAck.NewPlayback?) /** Reset this instance to an empty state. */ - fun reset() + fun reset(ack: StateAck.NewPlayback) } /** diff --git a/app/src/main/java/org/oxycblt/auxio/playback/state/PlaybackStateManager.kt b/app/src/main/java/org/oxycblt/auxio/playback/state/PlaybackStateManager.kt index 4dd7bb690..fceb344a5 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/state/PlaybackStateManager.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/state/PlaybackStateManager.kt @@ -743,19 +743,20 @@ class PlaybackStateManagerImpl @Inject constructor() : PlaybackStateManager { } // Make sure we re-align the index to point to the previously playing song. - fun pointingAtSong(): Boolean { + fun pointingAtSong(index: Int): Boolean { val currentSong = if (shuffledMapping.isNotEmpty()) { - shuffledMapping.getOrNull(savedState.index)?.let { heap.getOrNull(it) } + shuffledMapping.getOrNull(index)?.let { heap.getOrNull(it) } } else { - heap.getOrNull(savedState.index) + heap.getOrNull(index) } + logD(currentSong) return currentSong?.uid == savedState.songUid } var index = savedState.index - while (!pointingAtSong() && index > -1) { + while (!pointingAtSong(index) && index > -1) { index-- } @@ -766,7 +767,7 @@ class PlaybackStateManagerImpl @Inject constructor() : PlaybackStateManager { } if (index < 0) { - stateHolder.reset() + stateHolder.reset(StateAck.NewPlayback) return }