diff options
author | John Hoford <hoford@google.com> | 2013-04-22 13:40:39 -0700 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2013-04-22 13:40:39 -0700 |
commit | f61e5fdd4c946f671b391e3022c1d5be51eabc79 (patch) | |
tree | 30905a74938da4658529b014694423c524fc3078 /src/com/android/gallery3d/filtershow/cache | |
parent | ebda34f3d637fe87fa2aa01353fed9277ce86fc0 (diff) | |
parent | 55afc2dcadf2f88774fbbe2eb7b11a5639b9fa29 (diff) | |
download | android_packages_apps_Snap-f61e5fdd4c946f671b391e3022c1d5be51eabc79.tar.gz android_packages_apps_Snap-f61e5fdd4c946f671b391e3022c1d5be51eabc79.tar.bz2 android_packages_apps_Snap-f61e5fdd4c946f671b391e3022c1d5be51eabc79.zip |
am 91d26f6c: tiny planet fix
* commit '91d26f6c3b183862eeffc1856e2d758e800d13f4':
tiny planet fix
Diffstat (limited to 'src/com/android/gallery3d/filtershow/cache')
-rw-r--r-- | src/com/android/gallery3d/filtershow/cache/CachingPipeline.java | 14 | ||||
-rw-r--r-- | src/com/android/gallery3d/filtershow/cache/TripleBufferBitmap.java | 8 |
2 files changed, 18 insertions, 4 deletions
diff --git a/src/com/android/gallery3d/filtershow/cache/CachingPipeline.java b/src/com/android/gallery3d/filtershow/cache/CachingPipeline.java index fb0a29ebd..687376f33 100644 --- a/src/com/android/gallery3d/filtershow/cache/CachingPipeline.java +++ b/src/com/android/gallery3d/filtershow/cache/CachingPipeline.java @@ -22,9 +22,9 @@ import android.graphics.Bitmap; import android.support.v8.renderscript.Allocation; import android.support.v8.renderscript.RenderScript; import android.util.Log; + import com.android.gallery3d.filtershow.filters.FiltersManager; import com.android.gallery3d.filtershow.filters.ImageFilterGeometry; -import com.android.gallery3d.filtershow.filters.ImageFilterRS; import com.android.gallery3d.filtershow.imageshow.GeometryMetadata; import com.android.gallery3d.filtershow.imageshow.MasterImage; import com.android.gallery3d.filtershow.presets.FilterEnvironment; @@ -360,19 +360,25 @@ public class CachingPipeline { Bitmap resizedOriginalBitmap = mResizedOriginalBitmap; if (updateOriginalAllocation(preset)) { resizedOriginalBitmap = mResizedOriginalBitmap; - buffer.updateBitmaps(resizedOriginalBitmap); + mEnvironment.cache(buffer.getProducer()); + buffer.updateProducerBitmap(resizedOriginalBitmap); } Bitmap bitmap = buffer.getProducer(); long time2 = System.currentTimeMillis(); if (bitmap == null || (bitmap.getWidth() != resizedOriginalBitmap.getWidth()) || (bitmap.getHeight() != resizedOriginalBitmap.getHeight())) { - buffer.updateBitmaps(resizedOriginalBitmap); + mEnvironment.cache(buffer.getProducer()); + buffer.updateProducerBitmap(resizedOriginalBitmap); bitmap = buffer.getProducer(); } mOriginalAllocation.copyTo(bitmap); - bitmap = preset.apply(bitmap, mEnvironment); + Bitmap tmpbitmap = preset.apply(bitmap, mEnvironment); + if (tmpbitmap != bitmap) { + mEnvironment.cache(buffer.getProducer()); + buffer.setProducer(tmpbitmap); + } mFiltersManager.freeFilterResources(preset); diff --git a/src/com/android/gallery3d/filtershow/cache/TripleBufferBitmap.java b/src/com/android/gallery3d/filtershow/cache/TripleBufferBitmap.java index d91d64df6..ba7b76925 100644 --- a/src/com/android/gallery3d/filtershow/cache/TripleBufferBitmap.java +++ b/src/com/android/gallery3d/filtershow/cache/TripleBufferBitmap.java @@ -44,6 +44,14 @@ public class TripleBufferBitmap { mIntermediate = mBitmaps[2]; } + public synchronized void updateProducerBitmap(Bitmap bitmap) { + mProducer = bitmap.copy(mBitmapConfig, true); + } + + public synchronized void setProducer(Bitmap producer) { + mProducer = producer; + } + public synchronized Bitmap getProducer() { return mProducer; } |