OSDN Git Service

Fix Seekbar infinite recursion.
authorRuben Brunk <rubenbrunk@google.com>
Fri, 14 Dec 2012 05:55:53 +0000 (21:55 -0800)
committerRuben Brunk <rubenbrunk@google.com>
Fri, 14 Dec 2012 06:19:23 +0000 (22:19 -0800)
Bug: 7739384

Change-Id: Ie76d6741be4d08f3f9919662f1ad558c809aa5bd

src/com/android/gallery3d/filtershow/filters/ImageFilter.java
src/com/android/gallery3d/filtershow/imageshow/ImageShow.java

index 2319fcc..b8f0cf8 100644 (file)
@@ -23,11 +23,15 @@ import com.android.gallery3d.filtershow.presets.ImagePreset;
 
 public class ImageFilter implements Cloneable {
 
-    protected int mMaxParameter = 100;
-    protected int mMinParameter = -100;
+    public static int DEFAULT_MAX_PARAMETER = 100;
+    public static int DEFAULT_MIN_PARAMETER = -100;
+    public static int DEFAULT_INITIAL_PARAMETER = 0;
+
+    protected int mMaxParameter = DEFAULT_MAX_PARAMETER;
+    protected int mMinParameter = DEFAULT_MIN_PARAMETER;
     protected int mPreviewParameter = mMaxParameter;
-    protected int mDefaultParameter = 0;
-    protected int mParameter = 0;
+    protected int mDefaultParameter = DEFAULT_INITIAL_PARAMETER;
+    protected int mParameter = DEFAULT_INITIAL_PARAMETER;
     private ImagePreset mImagePreset;
 
     protected String mName = "Original";
index d9df7b7..f490859 100644 (file)
@@ -153,15 +153,15 @@ public class ImageShow extends View implements OnGestureListener,
     private final Handler mHandler = new Handler();
 
     public void select() {
+        if (mSeekBar != null) {
+            mSeekBar.setOnSeekBarChangeListener(this);
+        }
         if (getCurrentFilter() != null) {
             int parameter = getCurrentFilter().getParameter();
             int maxp = getCurrentFilter().getMaxParameter();
             int minp = getCurrentFilter().getMinParameter();
             updateSeekBar(parameter, minp, maxp);
         }
-        if (mSeekBar != null) {
-            mSeekBar.setOnSeekBarChangeListener(this);
-        }
     }
 
     private int parameterToUI(int parameter, int minp, int maxp, int uimax) {
@@ -179,9 +179,6 @@ public class ImageShow extends View implements OnGestureListener,
         int seekMax = mSeekBar.getMax();
         int progress = parameterToUI(parameter, minp, maxp, seekMax);
         mSeekBar.setProgress(progress);
-        if (getPanelController() != null) {
-            getPanelController().onNewValue(parameter);
-        }
     }
 
     public void unselect() {
@@ -198,7 +195,8 @@ public class ImageShow extends View implements OnGestureListener,
     public void resetParameter() {
         ImageFilter currentFilter = getCurrentFilter();
         if (currentFilter != null) {
-            onNewValue(currentFilter.getDefaultParameter());
+            updateSeekBar(currentFilter.getDefaultParameter(),
+                    getCurrentFilter().getMinParameter(), getCurrentFilter().getMaxParameter());
         }
         if (USE_SLIDER_GESTURE) {
             mSliderController.reset();
@@ -215,8 +213,8 @@ public class ImageShow extends View implements OnGestureListener,
 
     @Override
     public void onNewValue(int parameter) {
-        int maxp = 100;
-        int minp = -100;
+        int maxp = ImageFilter.DEFAULT_MAX_PARAMETER;
+        int minp = ImageFilter.DEFAULT_MIN_PARAMETER;
         if (getCurrentFilter() != null) {
             getCurrentFilter().setParameter(parameter);
             maxp = getCurrentFilter().getMaxParameter();
@@ -229,7 +227,6 @@ public class ImageShow extends View implements OnGestureListener,
         if (getPanelController() != null) {
             getPanelController().onNewValue(parameter);
         }
-        updateSeekBar(parameter, minp, maxp);
         invalidate();
         mActivity.enableSave(hasModifications());
     }