diff options
| author | John Hoford <hoford@google.com> | 2013-04-24 01:17:02 +0000 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2013-04-24 01:17:02 +0000 |
| commit | 0c71308c9d2a72d4a3faf00242707de773d5beba (patch) | |
| tree | 71a2304b553261c3e9425f0d6b6068835c76ac0c /src/com | |
| parent | 7d62e546b3b9eedc1f5c9d8f3ee644025f554fe3 (diff) | |
| parent | 17218987cfa32cff5dc719cfb88d0e3ce3677f00 (diff) | |
| download | android_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')
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; + } } } |
