summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTony Wickham <twickham@google.com>2015-11-04 15:01:54 -0800
committerTony Wickham <twickham@google.com>2015-11-18 11:31:26 -0800
commitf2bd93c7e0705fae1a94f95356702ab735f19e28 (patch)
tree1be17d834eda0c571cd92ea32e1cbfc3b2f6fe93
parenta43f78fc4b70bf54b9c90758660b6155ef0257aa (diff)
downloadandroid_packages_apps_Trebuchet-f2bd93c7e0705fae1a94f95356702ab735f19e28.tar.gz
android_packages_apps_Trebuchet-f2bd93c7e0705fae1a94f95356702ab735f19e28.tar.bz2
android_packages_apps_Trebuchet-f2bd93c7e0705fae1a94f95356702ab735f19e28.zip
Handle errors gracefully in WallpaperCropActivity.
(cherry picked from commit c984cde00840d8594a8b203748cb6e4f9967fd7c) Now instead of crashing, it says "Couldn't load image." Bug: 25326319 Bug: 25656670 Change-Id: I71471f4b26f7c23dee40b60772ddd798f67b409e
-rw-r--r--WallpaperPicker/src/com/android/photos/BitmapRegionTileSource.java14
1 files changed, 10 insertions, 4 deletions
diff --git a/WallpaperPicker/src/com/android/photos/BitmapRegionTileSource.java b/WallpaperPicker/src/com/android/photos/BitmapRegionTileSource.java
index 2d496a5a6..6baac6a6b 100644
--- a/WallpaperPicker/src/com/android/photos/BitmapRegionTileSource.java
+++ b/WallpaperPicker/src/com/android/photos/BitmapRegionTileSource.java
@@ -159,6 +159,7 @@ public class BitmapRegionTileSource implements TiledImageRenderer.TileSource {
public enum State { NOT_LOADED, LOADED, ERROR_LOADING };
private State mState = State.NOT_LOADED;
+ /** Returns whether loading was successful. */
public boolean loadInBackground(InBitmapProvider bitmapProvider) {
ExifInterface ei = new ExifInterface();
if (readExif(ei)) {
@@ -193,7 +194,7 @@ public class BitmapRegionTileSource implements TiledImageRenderer.TileSource {
try {
mPreview = loadPreviewBitmap(opts);
} catch (IllegalArgumentException e) {
- Log.d(TAG, "Unable to reusage bitmap", e);
+ Log.d(TAG, "Unable to reuse bitmap", e);
opts.inBitmap = null;
mPreview = null;
}
@@ -202,6 +203,10 @@ public class BitmapRegionTileSource implements TiledImageRenderer.TileSource {
if (mPreview == null) {
mPreview = loadPreviewBitmap(opts);
}
+ if (mPreview == null) {
+ mState = State.ERROR_LOADING;
+ return false;
+ }
// Verify that the bitmap can be used on GL surface
try {
@@ -212,7 +217,7 @@ public class BitmapRegionTileSource implements TiledImageRenderer.TileSource {
Log.d(TAG, "Image cannot be rendered on a GL surface", e);
mState = State.ERROR_LOADING;
}
- return true;
+ return mState == State.LOADED;
}
}
@@ -310,7 +315,7 @@ public class BitmapRegionTileSource implements TiledImageRenderer.TileSource {
Bitmap b = BitmapFactory.decodeStream(is, null, options);
Utils.closeSilently(is);
return b;
- } catch (FileNotFoundException e) {
+ } catch (FileNotFoundException | OutOfMemoryError e) {
Log.e("BitmapRegionTileSource", "Failed to load URI " + mUri, e);
return null;
}
@@ -412,7 +417,8 @@ public class BitmapRegionTileSource implements TiledImageRenderer.TileSource {
"Failed to create preview of apropriate size! "
+ " in: %dx%d, out: %dx%d",
mWidth, mHeight,
- preview.getWidth(), preview.getHeight()));
+ preview == null ? -1 : preview.getWidth(),
+ preview == null ? -1 : preview.getHeight()));
}
}
}