From b6f89de88d8e164461dbf36813b6c1ac2d680b95 Mon Sep 17 00:00:00 2001 From: Alexander Capehart Date: Mon, 26 Feb 2024 16:08:44 -0700 Subject: [PATCH] playback: fix crash w/add to queue Again, a two-fold problem: - Was not properly giving the right StateAck to the state holder - ShuffleOrder not properly handling the index given when adding to queue internally Resolves #727. --- .../oxycblt/auxio/playback/service/BetterShuffleOrder.kt | 6 +++++- .../oxycblt/auxio/playback/state/PlaybackStateManager.kt | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/oxycblt/auxio/playback/service/BetterShuffleOrder.kt b/app/src/main/java/org/oxycblt/auxio/playback/service/BetterShuffleOrder.kt index fe5c8628b..ed3044d45 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/service/BetterShuffleOrder.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/service/BetterShuffleOrder.kt @@ -68,7 +68,11 @@ class BetterShuffleOrder(private val shuffled: IntArray) : ShuffleOrder { } val newShuffled = IntArray(shuffled.size + insertionCount) - val pivot = indexInShuffled[insertionIndex] + val pivot: Int = if (insertionIndex < shuffled.size) { + indexInShuffled[insertionIndex] + } else { + indexInShuffled.size + } for (i in shuffled.indices) { var currentIndex = shuffled[i] if (currentIndex > insertionIndex) { 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 315642fd0..6e98c36e3 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 @@ -492,7 +492,7 @@ class PlaybackStateManagerImpl @Inject constructor() : PlaybackStateManager { } else { val stateHolder = stateHolder ?: return logD("Adding ${songs.size} songs to end of queue") - stateHolder.addToQueue(songs, StateAck.AddToQueue(stateMirror.index + 1, songs.size)) + stateHolder.addToQueue(songs, StateAck.AddToQueue(queue.size, songs.size)) } }