OSDN Git Service

Fix draw cache issue
authornicolasroard <nicolasroard@google.com>
Thu, 15 Aug 2013 18:25:21 +0000 (11:25 -0700)
committernicolasroard <nicolasroard@google.com>
Thu, 15 Aug 2013 18:25:37 +0000 (11:25 -0700)
Change-Id: Ib61dfb7763b929c9e51853da21031adcd16004d6

src/com/android/gallery3d/filtershow/cache/BitmapCache.java
src/com/android/gallery3d/filtershow/pipeline/CachingPipeline.java

index bd1130d..2699878 100644 (file)
@@ -49,8 +49,21 @@ public class BitmapCache {
             list = new ArrayList<WeakReference<Bitmap>>();
             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<Bitmap> ref = list.get(i);
                 if (ref.get() == bitmap) {
                     return; // bitmap already in the cache
index 0794277..0ff8bfb 100644 (file)
@@ -349,7 +349,6 @@ public class CachingPipeline implements PipelineInterface {
         }
         setupEnvironment(preset, false);
         Vector<FilterRepresentation> filters = preset.getFilters();
-        mEnvironment.cache(buffer.getProducer()); // the producer bitmap isn't needed anymore
         Bitmap result = mCachedProcessing.process(mOriginalBitmap, filters, mEnvironment);
         buffer.setProducer(result);
     }