aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authordaneren2005 <daneren2005@gmail.com>2014-05-19 11:34:27 -0700
committerdaneren2005 <daneren2005@gmail.com>2014-05-19 11:34:27 -0700
commita9567f0794e65e5d72d206670bf4439bfceeafa0 (patch)
treecdbc9b265774c87f613f28cb1ebc063af0a890da /src
parent9c3a80e3c56f39d96582ec27ca0710e6b7ee198e (diff)
downloaddsub-a9567f0794e65e5d72d206670bf4439bfceeafa0.tar.gz
dsub-a9567f0794e65e5d72d206670bf4439bfceeafa0.tar.bz2
dsub-a9567f0794e65e5d72d206670bf4439bfceeafa0.zip
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.
Diffstat (limited to 'src')
-rw-r--r--src/github/daneren2005/dsub/util/ShufflePlayBuffer.java13
1 files changed, 11 insertions, 2 deletions
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<MusicDirectory.Entry> buffer = new ArrayList<MusicDirectory.Entry>();
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() {