From 294be9a0a36f3cc51caa53966446a11bcc9a2a9a Mon Sep 17 00:00:00 2001 From: Siiiiinth <60766886+Siiiiinth@users.noreply.github.com> Date: Fri, 20 Feb 2026 16:16:52 +0100 Subject: [PATCH] fix track restarting on shuffle --- backend/playbackengine.go | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/backend/playbackengine.go b/backend/playbackengine.go index cae0fa4..938dbb9 100644 --- a/backend/playbackengine.go +++ b/backend/playbackengine.go @@ -371,7 +371,16 @@ func (p *playbackEngine) SetShuffle(shuffle bool) { newNowPlayingIdx := 0 if shuffle { - p.LoadItemsAndPlayAtIdx(p.playQueue, true, p.nowPlayingIdx) + shuffledQueue := deepCopyMediaItemSlice(p.playQueue) + rand.Shuffle(len(shuffledQueue), func(i, j int) { + shuffledQueue[i], shuffledQueue[j] = shuffledQueue[j], shuffledQueue[i] + }) + if p.nowPlayingIdx >= 0 && len(p.getPlayQueue()) > p.nowPlayingIdx { + nowPlayingID := p.getPlayQueue()[p.nowPlayingIdx].Metadata().ID + p.setShuffledPlayQueue(sharedutil.ReorderItems(shuffledQueue, []int{p.GetTrackIdxByIdFrom(shuffledQueue, nowPlayingID)}, 0)) + } else { + return + } } else { if p.nowPlayingIdx >= 0 && len(p.getShuffledPlayQueue()) > p.nowPlayingIdx { nowPlayingID := p.getShuffledPlayQueue()[p.nowPlayingIdx].Metadata().ID