summaryrefslogtreecommitdiffstats
path: root/src/com
diff options
context:
space:
mode:
authorJohn Hoford <hoford@google.com>2013-04-24 01:17:02 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2013-04-24 01:17:02 +0000
commit0c71308c9d2a72d4a3faf00242707de773d5beba (patch)
tree71a2304b553261c3e9425f0d6b6068835c76ac0c /src/com
parent7d62e546b3b9eedc1f5c9d8f3ee644025f554fe3 (diff)
parent17218987cfa32cff5dc719cfb88d0e3ce3677f00 (diff)
downloadandroid_packages_apps_Gallery2-0c71308c9d2a72d4a3faf00242707de773d5beba.tar.gz
android_packages_apps_Gallery2-0c71308c9d2a72d4a3faf00242707de773d5beba.tar.bz2
android_packages_apps_Gallery2-0c71308c9d2a72d4a3faf00242707de773d5beba.zip
Merge "interruptible renderer" into gb-ub-photos-bryce
Diffstat (limited to 'src/com')
-rw-r--r--src/com/android/gallery3d/filtershow/cache/CachingPipeline.java9
-rw-r--r--src/com/android/gallery3d/filtershow/cache/FilteringPipeline.java9
-rw-r--r--src/com/android/gallery3d/filtershow/presets/FilterEnvironment.java10
-rw-r--r--src/com/android/gallery3d/filtershow/presets/ImagePreset.java3
4 files changed, 27 insertions, 4 deletions
diff --git a/src/com/android/gallery3d/filtershow/cache/CachingPipeline.java b/src/com/android/gallery3d/filtershow/cache/CachingPipeline.java
index 566d161b5..e3c77000b 100644
--- a/src/com/android/gallery3d/filtershow/cache/CachingPipeline.java
+++ b/src/com/android/gallery3d/filtershow/cache/CachingPipeline.java
@@ -96,6 +96,10 @@ public class CachingPipeline {
sResources = null;
}
+ public void stop() {
+ mEnvironment.setStop(true);
+ }
+
public synchronized void reset() {
synchronized (CachingPipeline.class) {
if (getRenderScriptContext() == null) {
@@ -170,6 +174,7 @@ public class CachingPipeline {
}
mEnvironment.setQuality(ImagePreset.QUALITY_PREVIEW);
mEnvironment.setImagePreset(preset);
+ mEnvironment.setStop(false);
}
public void setOriginal(Bitmap bitmap) {
@@ -294,7 +299,9 @@ public class CachingPipeline {
}
Bitmap bmp = preset.apply(bitmap, mEnvironment);
- request.setBitmap(bmp);
+ if (!mEnvironment.needsStop()) {
+ request.setBitmap(bmp);
+ }
mFiltersManager.freeFilterResources(preset);
}
}
diff --git a/src/com/android/gallery3d/filtershow/cache/FilteringPipeline.java b/src/com/android/gallery3d/filtershow/cache/FilteringPipeline.java
index 8202d71bb..a0b289733 100644
--- a/src/com/android/gallery3d/filtershow/cache/FilteringPipeline.java
+++ b/src/com/android/gallery3d/filtershow/cache/FilteringPipeline.java
@@ -117,9 +117,11 @@ public class FilteringPipeline implements Handler.Callback {
} else {
mAccessoryPipeline.render(request);
}
- Message uimsg = mUIHandler.obtainMessage(NEW_RENDERING_REQUEST);
- uimsg.obj = request;
- mUIHandler.sendMessage(uimsg);
+ if (request.getBitmap() != null) {
+ Message uimsg = mUIHandler.obtainMessage(NEW_RENDERING_REQUEST);
+ uimsg.obj = request;
+ mUIHandler.sendMessage(uimsg);
+ }
break;
}
}
@@ -185,6 +187,7 @@ public class FilteringPipeline implements Handler.Callback {
return;
}
mHasUnhandledPreviewRequest = true;
+ mHighresPreviewPipeline.stop();
if (mProcessingHandler.hasMessages(COMPUTE_PRESET)) {
return;
}
diff --git a/src/com/android/gallery3d/filtershow/presets/FilterEnvironment.java b/src/com/android/gallery3d/filtershow/presets/FilterEnvironment.java
index 3c53227fc..c454c1ab6 100644
--- a/src/com/android/gallery3d/filtershow/presets/FilterEnvironment.java
+++ b/src/com/android/gallery3d/filtershow/presets/FilterEnvironment.java
@@ -35,6 +35,16 @@ public class FilterEnvironment {
private int mQuality;
private FiltersManager mFiltersManager;
private CachingPipeline mCachingPipeline;
+ private volatile boolean mStop = false;
+
+ public synchronized boolean needsStop() {
+ return mStop;
+ }
+
+ public synchronized void setStop(boolean stop) {
+ this.mStop = stop;
+ }
+
private HashMap<Long, WeakReference<Bitmap>>
bitmapCach = new HashMap<Long, WeakReference<Bitmap>>();
diff --git a/src/com/android/gallery3d/filtershow/presets/ImagePreset.java b/src/com/android/gallery3d/filtershow/presets/ImagePreset.java
index bd2f494cd..ca97761ed 100644
--- a/src/com/android/gallery3d/filtershow/presets/ImagePreset.java
+++ b/src/com/android/gallery3d/filtershow/presets/ImagePreset.java
@@ -472,6 +472,9 @@ public class ImagePreset {
representation.synchronizeRepresentation();
}
bitmap = environment.applyRepresentation(representation, bitmap);
+ if (environment.needsStop()) {
+ return bitmap;
+ }
}
}