summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJohn Hoford <hoford@google.com>2012-11-28 16:56:20 -0800
committerAndroid (Google) Code Review <android-gerrit@google.com>2012-11-28 16:56:21 -0800
commite5b979edb369877463e07680dddd9983bd2501cb (patch)
tree68cbcce7327272a03a5f7a7f93b2b7c94c936cbb /src
parent5d2227a793b51f44f664a739cc7e931c40ba4970 (diff)
parent4cdb22512f322d2749aa57e07abeebf65b47c26f (diff)
downloadandroid_packages_apps_Gallery2-e5b979edb369877463e07680dddd9983bd2501cb.tar.gz
android_packages_apps_Gallery2-e5b979edb369877463e07680dddd9983bd2501cb.tar.bz2
android_packages_apps_Gallery2-e5b979edb369877463e07680dddd9983bd2501cb.zip
Merge "reduce size of tiny planet if malloc fails" into gb-ub-photos-arches
Diffstat (limited to 'src')
-rw-r--r--src/com/android/gallery3d/filtershow/filters/ImageFilterTinyPlanet.java25
1 files changed, 22 insertions, 3 deletions
diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterTinyPlanet.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterTinyPlanet.java
index 423e55828..effd89ebe 100644
--- a/src/com/android/gallery3d/filtershow/filters/ImageFilterTinyPlanet.java
+++ b/src/com/android/gallery3d/filtershow/filters/ImageFilterTinyPlanet.java
@@ -22,6 +22,7 @@ import android.graphics.RectF;
import com.adobe.xmp.XMPException;
import com.adobe.xmp.XMPMeta;
+import com.android.gallery3d.app.Log;
import com.android.gallery3d.filtershow.presets.ImagePreset;
/**
@@ -90,8 +91,17 @@ public class ImageFilterTinyPlanet extends ImageFilter {
}
}
- Bitmap mBitmapOut = Bitmap.createBitmap(
- outputSize, outputSize, Bitmap.Config.ARGB_8888);
+ Bitmap mBitmapOut = null;
+ while (mBitmapOut == null) {
+ try {
+ mBitmapOut = Bitmap.createBitmap(
+ outputSize, outputSize, Bitmap.Config.ARGB_8888);
+ } catch (java.lang.OutOfMemoryError e) {
+ System.gc();
+ outputSize /= 2;
+ Log.v(TAG, "No memory to create Full Tiny Planet create half");
+ }
+ }
nativeApplyFilter(bitmapIn, bitmapIn.getWidth(), bitmapIn.getHeight(), mBitmapOut,
outputSize, mParameter / 100f, mAngle);
return mBitmapOut;
@@ -112,10 +122,19 @@ public class ImageFilterTinyPlanet extends ImageFilter {
// Make sure the intermediate image has the similar size to the
// input.
+ Bitmap paddedBitmap = null;
float scale = intermediateWidth / (float) fullPanoWidth;
- Bitmap paddedBitmap = Bitmap.createBitmap(
+ while (paddedBitmap == null) {
+ try {
+ paddedBitmap = Bitmap.createBitmap(
(int) (fullPanoWidth * scale), (int) (fullPanoHeight * scale),
Bitmap.Config.ARGB_8888);
+ } catch (java.lang.OutOfMemoryError e) {
+ System.gc();
+ scale /= 2;
+ Log.v(TAG, "No memory to create Full Tiny Planet create half");
+ }
+ }
Canvas paddedCanvas = new Canvas(paddedBitmap);
int right = left + croppedAreaWidth;