diff --git a/app/src/main/java/org/schabi/newpipe/player/Player.java b/app/src/main/java/org/schabi/newpipe/player/Player.java index 22e66e793dd..5435b9f819b 100644 --- a/app/src/main/java/org/schabi/newpipe/player/Player.java +++ b/app/src/main/java/org/schabi/newpipe/player/Player.java @@ -774,6 +774,8 @@ private void initPlayback(@NonNull final PlayQueue queue, destroyPlayer(); initPlayer(playOnReady); setRepeatMode(repeatMode); + // #6825 - Ensure that the shuffle-button is in the correct state on the UI + setShuffleButton(binding.shuffleButton, simpleExoPlayer.getShuffleModeEnabled()); setPlaybackParameters(playbackSpeed, playbackPitch, playbackSkipSilence); playQueue = queue; diff --git a/app/src/main/java/org/schabi/newpipe/player/playqueue/PlayQueue.java b/app/src/main/java/org/schabi/newpipe/player/playqueue/PlayQueue.java index 014c1333901..f2259b1202c 100644 --- a/app/src/main/java/org/schabi/newpipe/player/playqueue/PlayQueue.java +++ b/app/src/main/java/org/schabi/newpipe/player/playqueue/PlayQueue.java @@ -436,14 +436,16 @@ public synchronized void unsetRecovery(final int index) { * top, so shuffling a size-2 list does nothing) */ public synchronized void shuffle() { - // Can't shuffle an list that's empty or only has one element - if (size() <= 2) { - return; - } // Create a backup if it doesn't already exist + // Note: The backup-list has to be created at all cost (even when size <= 2). + // Otherwise it's not possible to enter shuffle-mode! if (backup == null) { backup = new ArrayList<>(streams); } + // Can't shuffle a list that's empty or only has one element + if (size() <= 2) { + return; + } final int originalIndex = getIndex(); final PlayQueueItem currentItem = getItem();