From: nicolasroard Date: Thu, 15 Aug 2013 18:25:21 +0000 (-0700) Subject: Fix draw cache issue X-Git-Tag: android-x86-7.1-r1~172^2~3^2~159 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=f904939a;p=android-x86%2Fpackages-apps-Gallery2.git Fix draw cache issue Change-Id: Ib61dfb7763b929c9e51853da21031adcd16004d6 --- 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); }