From e0352a105a0897e83bcb6c47b418cb73a6ad5d3e Mon Sep 17 00:00:00 2001 From: unrenowned <163776820+unrenowned@users.noreply.github.com> Date: Fri, 29 Mar 2024 14:27:18 +0000 Subject: [PATCH] playback: fix playNext crash on last song of queue Fixes OxygenCobalt/Auxio#735. ExoPlayer method for fetching next media item returns C.INDEX_UNSET (-1) when used on the last song of a queue, which is not a valid index for ExoPlayer.addMediaItems(). New code just adds songs to the end of the queue if there isn't a next song. --- .../auxio/playback/service/PlaybackServiceFragment.kt | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) 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 32e60cf7d..ee2d281ed 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 @@ -362,7 +362,14 @@ constructor( } override fun playNext(songs: List, ack: StateAck.PlayNext) { - player.addMediaItems(player.nextMediaItemIndex, songs.map { it.toMediaItem() }) + val nextIndex = player.nextMediaItemIndex + + if (nextIndex == C.INDEX_UNSET) { + player.addMediaItems(songs.map { it.toMediaItem() }) + } else { + player.addMediaItems(nextIndex, songs.map { it.toMediaItem() }) + } + playbackManager.ack(this, ack) deferSave() }