diff --git a/vendor/kotlinaudio/kotlin-audio/src/main/java/com/doublesymmetry/kotlinaudio/players/QueuedAudioPlayer.kt b/vendor/kotlinaudio/kotlin-audio/src/main/java/com/doublesymmetry/kotlinaudio/players/QueuedAudioPlayer.kt index 78a5b62..9b01f05 100644 --- a/vendor/kotlinaudio/kotlin-audio/src/main/java/com/doublesymmetry/kotlinaudio/players/QueuedAudioPlayer.kt +++ b/vendor/kotlinaudio/kotlin-audio/src/main/java/com/doublesymmetry/kotlinaudio/players/QueuedAudioPlayer.kt @@ -183,9 +183,10 @@ class QueuedAudioPlayer( */ fun move(fromIndex: Int, toIndex: Int) { exoPlayer.moveMediaItem(fromIndex, toIndex) - val item = queue[fromIndex] - queue.removeAt(fromIndex) - queue.add(max(0, min(items.size, if (toIndex > fromIndex) toIndex else toIndex - 1)), item) + // Mirror ExoPlayer's remove-then-insert-at-toIndex semantics exactly, or this + // metadata list drifts from the timeline and events report the wrong track. + val item = queue.removeAt(fromIndex) + queue.add(max(0, min(queue.size, toIndex)), item) } /**