From f904939a3613902d4a0cc06741a00377bb55d44b Mon Sep 17 00:00:00 2001 From: nicolasroard Date: Thu, 15 Aug 2013 11:25:21 -0700 Subject: [PATCH] Fix draw cache issue Change-Id: Ib61dfb7763b929c9e51853da21031adcd16004d6 --- .../android/gallery3d/filtershow/cache/BitmapCache.java | 15 ++++++++++++++- .../gallery3d/filtershow/pipeline/CachingPipeline.java | 1 - 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/com/android/gallery3d/filtershow/cache/BitmapCache.java b/src/com/android/gallery3d/filtershow/cache/BitmapCache.java index bd1130d26..26998783d 100644 --- a/src/com/android/gallery3d/filtershow/cache/BitmapCache.java +++ b/src/com/android/gallery3d/filtershow/cache/BitmapCache.java @@ -49,8 +49,21 @@ public class BitmapCache { list = new ArrayList>(); mBitmapCache.put(key, list); } + int i = 0; + while (i < list.size()) { + if (list.get(i).get() == null) { + list.remove(i); + } else { + i++; + } + } + for (i = 0; i < list.size(); i++) { + if (list.get(i).get() == null) { + list.remove(i); + } + } if (list.size() < mMaxItemsPerKey) { - for (int i = 0; i < list.size(); i++) { + for (i = 0; i < list.size(); i++) { WeakReference ref = list.get(i); if (ref.get() == bitmap) { return; // bitmap already in the cache diff --git a/src/com/android/gallery3d/filtershow/pipeline/CachingPipeline.java b/src/com/android/gallery3d/filtershow/pipeline/CachingPipeline.java index 0794277b0..0ff8bfbad 100644 --- a/src/com/android/gallery3d/filtershow/pipeline/CachingPipeline.java +++ b/src/com/android/gallery3d/filtershow/pipeline/CachingPipeline.java @@ -349,7 +349,6 @@ public class CachingPipeline implements PipelineInterface { } setupEnvironment(preset, false); Vector filters = preset.getFilters(); - mEnvironment.cache(buffer.getProducer()); // the producer bitmap isn't needed anymore Bitmap result = mCachedProcessing.process(mOriginalBitmap, filters, mEnvironment); buffer.setProducer(result); } -- 2.11.0