summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorChris Wren <cwren@android.com>2012-10-03 11:42:52 -0400
committerChris Wren <cwren@android.com>2012-10-03 11:42:52 -0400
commit89ada9791087c8004f300ddd9e8ba58fbc84eaae (patch)
tree382bc8f9689b60d7d6c24d67e8e3e6290e45b66c /src
parent2f407123b8faeea98d071f1a582da2b17051306e (diff)
downloadandroid_packages_screensavers_PhotoTable-89ada9791087c8004f300ddd9e8ba58fbc84eaae.tar.gz
android_packages_screensavers_PhotoTable-89ada9791087c8004f300ddd9e8ba58fbc84eaae.tar.bz2
android_packages_screensavers_PhotoTable-89ada9791087c8004f300ddd9e8ba58fbc84eaae.zip
fix NPE un stream unpacking failure.
Bug: 7242346 Change-Id: I5f27baba860081111224b7312cfef027c1312264
Diffstat (limited to 'src')
-rw-r--r--src/com/android/dreams/phototable/PhotoSource.java64
1 files changed, 36 insertions, 28 deletions
diff --git a/src/com/android/dreams/phototable/PhotoSource.java b/src/com/android/dreams/phototable/PhotoSource.java
index 06dd816..21c6646 100644
--- a/src/com/android/dreams/phototable/PhotoSource.java
+++ b/src/com/android/dreams/phototable/PhotoSource.java
@@ -163,38 +163,46 @@ public abstract class PhotoSource {
image = BitmapFactory.decodeStream(bis, null, options);
rawLongSide = Math.max(options.outWidth, options.outHeight);
rawShortSide = Math.max(options.outWidth, options.outHeight);
- ratio = Math.max((float) longSide / (float) rawLongSide,
- (float) shortSide / (float) rawShortSide);
-
- if (Math.abs(ratio - 1.0f) > 0.001) {
- log(TAG, "still too big, scaling down by " + ratio);
- options.outWidth = (int) (ratio * options.outWidth);
- options.outHeight = (int) (ratio * options.outHeight);
-
- image = Bitmap.createScaledBitmap(image,
- options.outWidth, options.outHeight,
- true);
- }
+ if (image != null && rawLongSide != -1 && rawShortSide != -1) {
+ ratio = Math.max((float) longSide / (float) rawLongSide,
+ (float) shortSide / (float) rawShortSide);
+
+ if (Math.abs(ratio - 1.0f) > 0.001) {
+ log(TAG, "still too big, scaling down by " + ratio);
+ options.outWidth = (int) (ratio * options.outWidth);
+ options.outHeight = (int) (ratio * options.outHeight);
+
+ image = Bitmap.createScaledBitmap(image,
+ options.outWidth, options.outHeight,
+ true);
+ }
- if (data.orientation != 0) {
- log(TAG, "rotated by " + data.orientation + ": fixing");
- if (data.orientation == 90 || data.orientation == 270) {
- int tmp = options.outWidth;
- options.outWidth = options.outHeight;
- options.outHeight = tmp;
+ if (data.orientation != 0) {
+ log(TAG, "rotated by " + data.orientation + ": fixing");
+ if (data.orientation == 90 || data.orientation == 270) {
+ int tmp = options.outWidth;
+ options.outWidth = options.outHeight;
+ options.outHeight = tmp;
+ }
+ Matrix matrix = new Matrix();
+ matrix.setRotate(data.orientation,
+ (float) image.getWidth() / 2,
+ (float) image.getHeight() / 2);
+ image = Bitmap.createBitmap(image, 0, 0,
+ options.outHeight, options.outWidth,
+ matrix, true);
}
- Matrix matrix = new Matrix();
- matrix.setRotate(data.orientation,
- (float) image.getWidth() / 2,
- (float) image.getHeight() / 2);
- image = Bitmap.createBitmap(image, 0, 0,
- options.outHeight, options.outWidth,
- matrix, true);
- }
- log(TAG, "returning bitmap " + image.getWidth() + ", " + image.getHeight());
+ log(TAG, "returning bitmap " + image.getWidth() + ", " + image.getHeight());
+ } else {
+ image = null;
+ }
} else {
- log(TAG, "decoding failed with no error: " + options.mCancel);
+ image = null;
+ }
+ if (image == null) {
+ log(TAG, "Stream decoding failed with no error" +
+ (options.mCancel ? " due to cancelation." : "."));
}
} catch (FileNotFoundException fnf) {
log(TAG, "file not found: " + fnf);