From 691ed202e504c0c34b13f17b9bd4e4867fdadc38 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/state/PlaybackStateManager.kt | 2 +- .../org/oxycblt/auxio/playback/system/BetterShuffleOrder.kt | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) 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)) } } diff --git a/app/src/main/java/org/oxycblt/auxio/playback/system/BetterShuffleOrder.kt b/app/src/main/java/org/oxycblt/auxio/playback/system/BetterShuffleOrder.kt index e09d9ba2a..d85f82a9b 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/system/BetterShuffleOrder.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/system/BetterShuffleOrder.kt @@ -69,7 +69,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) {