OSDN Git Service

Fixed a crash when an image with an odd width/height was selected
authorSelim Cinek <cinek@google.com>
Fri, 14 Mar 2014 17:19:35 +0000 (18:19 +0100)
committerSelim Cinek <cinek@google.com>
Fri, 14 Mar 2014 17:27:23 +0000 (18:27 +0100)
Due to an internal rounding in the renderer, the calculations
for the cropping area could be slightly offset, getting out
of the image boundaries. I sanitized the rect by ensuring they
are inside the image.

Bug: 12174629
Change-Id: I5e08c83fe3e9cd48254fa6c8ba9cef77ab8a51a6

WallpaperPicker/src/com/android/launcher3/WallpaperCropActivity.java

index bbbd910..1f35622 100644 (file)
@@ -366,6 +366,14 @@ public class WallpaperCropActivity extends Activity {
                 getWindowManager());
         // Get the crop
         RectF cropRect = mCropView.getCrop();
+
+        // due to rounding errors in the cropview renderer the edges can be slightly offset
+        // therefore we ensure that the boundaries are sanely defined
+        cropRect.left = Math.max(0, cropRect.left);
+        cropRect.right = Math.min(mCropView.getWidth(), cropRect.right);
+        cropRect.top = Math.max(0, cropRect.top);
+        cropRect.bottom = Math.min(mCropView.getHeight(), cropRect.bottom);
+
         int cropRotation = mCropView.getImageRotation();
         float cropScale = mCropView.getWidth() / (float) cropRect.width();