From 853fdd5251190c74f9d2bb8a62d05aca9f9bfd5e Mon Sep 17 00:00:00 2001 From: MaFo-28 Date: Sun, 31 May 2026 09:31:14 +0200 Subject: [PATCH] keep only 30 items in queue before starting continuous mix --- .../tempo/service/MediaManager.java | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/app/src/main/java/com/cappielloantonio/tempo/service/MediaManager.java b/app/src/main/java/com/cappielloantonio/tempo/service/MediaManager.java index e274471cc..a8088e05a 100644 --- a/app/src/main/java/com/cappielloantonio/tempo/service/MediaManager.java +++ b/app/src/main/java/com/cappielloantonio/tempo/service/MediaManager.java @@ -479,6 +479,27 @@ public static void continuousPlay(MediaItem mediaItem, Preferences.setLastInstantMix(); continuousPlayIsRunning.set(true); + // keep only 30 items in queue before starting continuous mix + if (existingBrowserFuture != null) { + existingBrowserFuture.addListener(() -> { + try { + if (existingBrowserFuture.isDone()) { + MediaBrowser browser = existingBrowserFuture.get(); + int currentIndex = browser.getCurrentMediaItem() != null + ? browser.getCurrentMediaItemIndex() + : 0; + int firstToKeep = Math.max(0, currentIndex - 29); + if (firstToKeep > 0) { + Log.d(TAG, "Continuous Play: purging " + firstToKeep + " old items from queue"); + removeRange(existingBrowserFuture, 0, firstToKeep); + } + } + } catch (ExecutionException | InterruptedException e) { + Log.e(TAG, "Continuous Play: purge failed", e); + } + }, MoreExecutors.directExecutor()); + } + LiveData> instantMix = getSongRepository().getContinuousMix(mediaItem.mediaId, 25);