From 8e5d061af5500f506a4caa457aae8cf77472d992 Mon Sep 17 00:00:00 2001 From: Alexander Capehart Date: Fri, 17 May 2024 16:18:01 -0600 Subject: [PATCH] playback: re-add old swap move Turns out this did have a reason to exist, ExoPlayer doesn't have intrinsic capabilities to update the shuffle order on moves. --- .../oxycblt/auxio/playback/service/ExoPlaybackStateHolder.kt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/oxycblt/auxio/playback/service/ExoPlaybackStateHolder.kt b/app/src/main/java/org/oxycblt/auxio/playback/service/ExoPlaybackStateHolder.kt index e8dca68be..8413738b9 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/service/ExoPlaybackStateHolder.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/service/ExoPlaybackStateHolder.kt @@ -21,7 +21,6 @@ package org.oxycblt.auxio.playback.service import android.content.Context import android.content.Intent import android.media.audiofx.AudioEffect -import android.os.Bundle import androidx.media3.common.AudioAttributes import androidx.media3.common.C import androidx.media3.common.MediaItem @@ -329,12 +328,16 @@ class ExoPlaybackStateHolder( val trueFrom = indices[from] val trueTo = indices[to] + // ExoPlayer does not actually update it's ShuffleOrder when moving items. Retain a + // semblance of "normalcy" by doing a weird no-op swap that actually moves the item. when { trueFrom > trueTo -> { player.moveMediaItem(trueFrom, trueTo) + player.moveMediaItem(trueTo + 1, trueFrom) } trueTo > trueFrom -> { player.moveMediaItem(trueFrom, trueTo) + player.moveMediaItem(trueTo - 1, trueFrom) } } playbackManager.ack(this, ack)