summaryrefslogtreecommitdiffstats
path: root/src/com/android/gallery3d/filtershow/pipeline/ProcessingTask.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/gallery3d/filtershow/pipeline/ProcessingTask.java')
-rw-r--r--src/com/android/gallery3d/filtershow/pipeline/ProcessingTask.java20
1 files changed, 18 insertions, 2 deletions
diff --git a/src/com/android/gallery3d/filtershow/pipeline/ProcessingTask.java b/src/com/android/gallery3d/filtershow/pipeline/ProcessingTask.java
index c3687ee6a..8d3e8110f 100644
--- a/src/com/android/gallery3d/filtershow/pipeline/ProcessingTask.java
+++ b/src/com/android/gallery3d/filtershow/pipeline/ProcessingTask.java
@@ -25,15 +25,29 @@ public abstract class ProcessingTask {
private Handler mProcessingHandler;
private Handler mResultHandler;
private int mType;
+ private static final int DELAY = 300;
static interface Request {}
static interface Update {}
static interface Result {}
- public void postRequest(Request message) {
+ public boolean postRequest(Request message) {
Message msg = mProcessingHandler.obtainMessage(mType);
msg.obj = message;
- mProcessingHandler.sendMessage(msg);
+ if (isPriorityTask()) {
+ if (mProcessingHandler.hasMessages(getType())) {
+ return false;
+ }
+ mProcessingHandler.sendMessageAtFrontOfQueue(msg);
+ } else if (isDelayedTask()) {
+ if (mProcessingHandler.hasMessages(getType())) {
+ mProcessingHandler.removeMessages(getType());
+ }
+ mProcessingHandler.sendMessageDelayed(msg, DELAY);
+ } else {
+ mProcessingHandler.sendMessage(msg);
+ }
+ return true;
}
public void postUpdate(Update message) {
@@ -69,4 +83,6 @@ public abstract class ProcessingTask {
public abstract Result doInBackground(Request message);
public abstract void onResult(Result message);
public void onUpdate(Update message) {}
+ public boolean isPriorityTask() { return false; }
+ public boolean isDelayedTask() { return false; }
}