Fix the save button issue.

When dealing with non Fx filters, the hasModification() really need to go deep
to figure out whether things has changed.

bug:9468909

Change-Id: I89495f147f7af7c35490def84805aae98e3f917f
diff --git a/src/com/android/gallery3d/filtershow/filters/FilterRepresentation.java b/src/com/android/gallery3d/filtershow/filters/FilterRepresentation.java
index c046a6e..a60410d 100644
--- a/src/com/android/gallery3d/filtershow/filters/FilterRepresentation.java
+++ b/src/com/android/gallery3d/filtershow/filters/FilterRepresentation.java
@@ -174,6 +174,9 @@
         mFilterClass = filterClass;
     }
 
+    // This same() function is different from equals(), basically it checks
+    // whether 2 FilterRepresentations are the same type. It doesn't care about
+    // the values.
     public boolean same(FilterRepresentation b) {
         if (b == null) {
             return false;
diff --git a/src/com/android/gallery3d/filtershow/presets/ImagePreset.java b/src/com/android/gallery3d/filtershow/presets/ImagePreset.java
index 2276ee7..5a0100d 100644
--- a/src/com/android/gallery3d/filtershow/presets/ImagePreset.java
+++ b/src/com/android/gallery3d/filtershow/presets/ImagePreset.java
@@ -186,6 +186,20 @@
         return geo;
     }
 
+    public boolean hasModifications() {
+        for (int i = 0; i < mFilters.size(); i++) {
+            FilterRepresentation filter = mFilters.elementAt(i);
+            if (filter instanceof GeometryMetadata) {
+                if (((GeometryMetadata) filter).hasModifications()) {
+                    return true;
+                }
+            } else if (!filter.isNil()) {
+                return true;
+            }
+        }
+        return false;
+    }
+
     public boolean isPanoramaSafe() {
         for (FilterRepresentation representation : mFilters) {
             if (representation instanceof GeometryMetadata) {