From a9567f0794e65e5d72d206670bf4439bfceeafa0 Mon Sep 17 00:00:00 2001 From: daneren2005 Date: Mon, 19 May 2014 11:34:27 -0700 Subject: Add delayed call to checkDownloads after filling buffer checkDownloads is no longer called in a loop, which was how the queue got filled after clearing and refreshing the shuffle buffer. Fix was to add a delayed call which calls checkDownloads after a refill action occurs. --- src/github/daneren2005/dsub/util/ShufflePlayBuffer.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/github/daneren2005/dsub/util/ShufflePlayBuffer.java b/src/github/daneren2005/dsub/util/ShufflePlayBuffer.java index c28e24a3..de1be13a 100644 --- a/src/github/daneren2005/dsub/util/ShufflePlayBuffer.java +++ b/src/github/daneren2005/dsub/util/ShufflePlayBuffer.java @@ -49,7 +49,8 @@ public class ShufflePlayBuffer { private boolean firstRun = true; private final ArrayList buffer = new ArrayList(); private int lastCount = -1; - private Context context; + private DownloadService context; + private boolean awaitingResults = false; private SharedPreferences.OnSharedPreferenceChangeListener listener; private int currentServer; @@ -58,7 +59,7 @@ public class ShufflePlayBuffer { private String startYear = ""; private String endYear = ""; - public ShufflePlayBuffer(Context context) { + public ShufflePlayBuffer(DownloadService context) { this.context = context; executorService = Executors.newSingleThreadScheduledExecutor(); @@ -90,6 +91,9 @@ public class ShufflePlayBuffer { } } Log.i(TAG, "Taking " + result.size() + " songs from shuffle play buffer. " + buffer.size() + " remaining."); + if(result.isEmpty()) { + awaitingResults = true; + } return result; } @@ -139,6 +143,11 @@ public class ShufflePlayBuffer { } Log.w(TAG, "Failed to refill shuffle play buffer.", x); } + + if(awaitingResults) { + awaitingResults = false; + context.checkDownloads(); + } } private void clearBufferIfnecessary() { -- cgit v1.2.3