OSDN Git Service

am 7fa373b0: Fix pipeline overstress
authornicolasroard <nicolasroard@google.com>
Fri, 13 Sep 2013 01:04:46 +0000 (18:04 -0700)
committerAndroid Git Automerger <android-git-automerger@android.com>
Fri, 13 Sep 2013 01:04:46 +0000 (18:04 -0700)
* commit '7fa373b0c3143c2c55a0d72487607d5a05c72e1d':
  Fix pipeline overstress

src/com/android/gallery3d/filtershow/imageshow/ImageShow.java
src/com/android/gallery3d/filtershow/imageshow/MasterImage.java
src/com/android/gallery3d/filtershow/pipeline/ImagePreset.java

index c981b77..281f19d 100644 (file)
@@ -170,6 +170,7 @@ public class ImageShow extends View implements OnGestureListener,
     public void attach() {
         MasterImage.getImage().addObserver(this);
         bindAsImageLoadListener();
+        MasterImage.getImage().resetGeometryImages(false);
     }
 
     public void detach() {
index bad2012..61d32b1 100644 (file)
@@ -499,6 +499,9 @@ public class MasterImage implements RenderingRequestCaller {
     }
 
     public void resetGeometryImages(boolean force) {
+        if (mPreset == null) {
+            return;
+        }
         ImagePreset newPresetGeometryOnly = new ImagePreset(mPreset);
         newPresetGeometryOnly.setDoApplyFilters(false);
         newPresetGeometryOnly.setDoApplyGeometry(true);
@@ -533,7 +536,6 @@ public class MasterImage implements RenderingRequestCaller {
 
     public void invalidateFiltersOnly() {
         mFiltersOnlyPreset = null;
-        resetGeometryImages(false);
         invalidatePreview();
     }
 
index 1876f25..322a34d 100644 (file)
@@ -268,8 +268,20 @@ public class ImagePreset {
         for (int i = 0; i < preset.mFilters.size(); i++) {
             FilterRepresentation a = preset.mFilters.elementAt(i);
             FilterRepresentation b = mFilters.elementAt(i);
-
-            if (!a.equals(b)) {
+            boolean isGeometry = false;
+            if (a instanceof FilterRotateRepresentation
+                    || a instanceof FilterMirrorRepresentation
+                    || a instanceof FilterCropRepresentation
+                    || a instanceof FilterStraightenRepresentation) {
+                isGeometry = true;
+            }
+            boolean evaluate = true;
+            if (!isGeometry && mDoApplyGeometry && !mDoApplyFilters) {
+                evaluate = false;
+            } else if (isGeometry && !mDoApplyGeometry && mDoApplyFilters) {
+                evaluate = false;
+            }
+            if (evaluate && !a.equals(b)) {
                 return false;
             }
         }