summaryrefslogtreecommitdiffstats
path: root/packages/WallpaperCropper
diff options
context:
space:
mode:
authorSelim Cinek <cinek@google.com>2014-03-14 18:42:48 +0100
committerSelim Cinek <cinek@google.com>2014-03-14 18:48:03 +0100
commit912e0df89ce798a5922f87fd65b87bb99f8b4813 (patch)
tree24d4d8bdcba986c20a6d9419bb7dadce50020076 /packages/WallpaperCropper
parentfc558d56c2040220853d9912d765cfc535463689 (diff)
downloadframeworks_base-912e0df89ce798a5922f87fd65b87bb99f8b4813.zip
frameworks_base-912e0df89ce798a5922f87fd65b87bb99f8b4813.tar.gz
frameworks_base-912e0df89ce798a5922f87fd65b87bb99f8b4813.tar.bz2
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: Icc37790732ddd479631b898b23c05501d2dcd5be
Diffstat (limited to 'packages/WallpaperCropper')
-rw-r--r--packages/WallpaperCropper/src/com/android/wallpapercropper/WallpaperCropActivity.java7
1 files changed, 7 insertions, 0 deletions
diff --git a/packages/WallpaperCropper/src/com/android/wallpapercropper/WallpaperCropActivity.java b/packages/WallpaperCropper/src/com/android/wallpapercropper/WallpaperCropActivity.java
index b9b87b1..e45b98c 100644
--- a/packages/WallpaperCropper/src/com/android/wallpapercropper/WallpaperCropActivity.java
+++ b/packages/WallpaperCropper/src/com/android/wallpapercropper/WallpaperCropActivity.java
@@ -340,6 +340,13 @@ 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();