OSDN Git Service

Fix ANR in image editor
authornicolasroard <nicolasroard@google.com>
Wed, 3 Oct 2012 21:30:11 +0000 (14:30 -0700)
committernicolasroard <nicolasroard@google.com>
Wed, 3 Oct 2012 21:32:57 +0000 (14:32 -0700)
bug:7275425
Change-Id: I01a89579e17a0e4fc0817b61c7fda48ca54d0afa

src/com/android/gallery3d/filtershow/filters/ImageFilterGradient.java
src/com/android/gallery3d/filtershow/imageshow/ImageStraighten.java

index 4e46943..d27dd34 100644 (file)
@@ -25,9 +25,8 @@ public class ImageFilterGradient extends ImageFilter {
     @Override
     public ImageFilter clone() throws CloneNotSupportedException {
         ImageFilterGradient filter = (ImageFilterGradient) super.clone();
-        for (int i = 0; i < mColors.length; i++) {
-            filter.addColor(mColors[i], mPositions[i]);
-        }
+        System.arraycopy(mColors, 0, filter.mColors, 0, mColors.length);
+        System.arraycopy(mPositions, 0, filter.mPositions, 0, mPositions.length);
         return filter;
     }
 
index fbc4666..c4f0456 100644 (file)
@@ -89,12 +89,19 @@ public class ImageStraighten extends ImageShow {
 
     public void setActionUp() {
         mMode = MODES.UP;
+        updatePreset();
     }
 
     public void setNoAction() {
         mMode = MODES.NONE;
     }
 
+    private void updatePreset() {
+        ImagePreset copy = new ImagePreset(getImagePreset());
+        copy.setStraightenRotation(mImageRotation, mImageRotationZoomFactor);
+        setImagePreset(copy);
+    }
+
     public boolean onTouchEvent(MotionEvent event) {
         switch (event.getActionMasked()) {
             case (MotionEvent.ACTION_DOWN):
@@ -232,13 +239,6 @@ public class ImageStraighten extends ImageShow {
 
         mImageRotationZoomFactor = (float) (rw / boundsRect.width());
 
-        ImagePreset copy = new ImagePreset(getImagePreset());
-        Log.v(LOGTAG, "creating a new image preset with rotation " + mImageRotation
-                + " and zoom factor: " + mImageRotationZoomFactor);
-
-        copy.setStraightenRotation(mImageRotation, mImageRotationZoomFactor);
-        setImagePreset(copy);
-
         if (mMode == MODES.MOVE) {
             canvas.save();
             canvas.clipPath(path);