From e04e8b2a142f22bfeb8729e542f51d5510327eb9 Mon Sep 17 00:00:00 2001 From: Selim Cinek Date: Fri, 14 Mar 2014 18:19:35 +0100 Subject: Fixed a crash when an image with an odd width/height was selected 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 --- .../src/com/android/launcher3/WallpaperCropActivity.java | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'WallpaperPicker') diff --git a/WallpaperPicker/src/com/android/launcher3/WallpaperCropActivity.java b/WallpaperPicker/src/com/android/launcher3/WallpaperCropActivity.java index bbbd9105c..1f35622af 100644 --- a/WallpaperPicker/src/com/android/launcher3/WallpaperCropActivity.java +++ b/WallpaperPicker/src/com/android/launcher3/WallpaperCropActivity.java @@ -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(); -- cgit v1.2.3