summaryrefslogtreecommitdiffstats
path: root/src/com/android/gallery3d/filtershow/filters
diff options
context:
space:
mode:
authorRuben Brunk <rubenbrunk@google.com>2013-02-22 13:25:51 -0800
committerRuben Brunk <rubenbrunk@google.com>2013-02-22 13:54:37 -0800
commit5ebc5b3bc483b6c16aab9138995bb83f81ffc0c1 (patch)
tree6157a8416d43cacc91729b217daa30946a3b560e /src/com/android/gallery3d/filtershow/filters
parent8d363f83371b18bef02ad7aeeacc5060f3097c96 (diff)
downloadandroid_packages_apps_Snap-5ebc5b3bc483b6c16aab9138995bb83f81ffc0c1.tar.gz
android_packages_apps_Snap-5ebc5b3bc483b6c16aab9138995bb83f81ffc0c1.tar.bz2
android_packages_apps_Snap-5ebc5b3bc483b6c16aab9138995bb83f81ffc0c1.zip
Stopgap fixes for more of the photo editor's memory issues.
Bug: 8253109 Bug: 8233895 Change-Id: Idd55618807ff0a0c5ac0cbb8c71db167fa32e70b
Diffstat (limited to 'src/com/android/gallery3d/filtershow/filters')
-rw-r--r--src/com/android/gallery3d/filtershow/filters/ImageFilter.java30
-rw-r--r--src/com/android/gallery3d/filtershow/filters/ImageFilterRS.java5
2 files changed, 33 insertions, 2 deletions
diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilter.java b/src/com/android/gallery3d/filtershow/filters/ImageFilter.java
index 614c6a01d..1b7a36744 100644
--- a/src/com/android/gallery3d/filtershow/filters/ImageFilter.java
+++ b/src/com/android/gallery3d/filtershow/filters/ImageFilter.java
@@ -18,8 +18,10 @@ package com.android.gallery3d.filtershow.filters;
import android.graphics.Bitmap;
import android.graphics.Matrix;
+import android.widget.Toast;
import com.android.gallery3d.R;
+import com.android.gallery3d.filtershow.FilterShowActivity;
import com.android.gallery3d.filtershow.editors.BasicEditor;
import com.android.gallery3d.filtershow.imageshow.GeometryMetadata;
import com.android.gallery3d.filtershow.presets.ImagePreset;
@@ -31,6 +33,30 @@ public abstract class ImageFilter implements Cloneable {
protected String mName = "Original";
private final String LOGTAG = "ImageFilter";
+ // TODO: Temporary, for dogfood note memory issues with toasts for better
+ // feedback. Remove this when filters actually work in low memory
+ // situations.
+ private static FilterShowActivity sActivity = null;
+
+ public static void setActivityForMemoryToasts(FilterShowActivity activity) {
+ sActivity = activity;
+ }
+
+ public static void resetStatics() {
+ sActivity = null;
+ }
+
+ public void displayLowMemoryToast() {
+ if (sActivity != null) {
+ sActivity.runOnUiThread(new Runnable() {
+ public void run() {
+ Toast.makeText(sActivity, "Memory too low for filter " + getName() +
+ ", please file a bug report", Toast.LENGTH_SHORT).show();
+ }
+ });
+ }
+ }
+
public void setName(String name) {
mName = name;
}
@@ -45,8 +71,8 @@ public abstract class ImageFilter implements Cloneable {
}
/**
- * Called on small bitmaps to create button icons for each filter.
- * Override this to provide filter-specific button icons.
+ * Called on small bitmaps to create button icons for each filter. Override
+ * this to provide filter-specific button icons.
*/
public Bitmap iconApply(Bitmap bitmap, float scaleFactor, int quality) {
return apply(bitmap, scaleFactor, quality);
diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterRS.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterRS.java
index 74712be47..a3467edde 100644
--- a/src/com/android/gallery3d/filtershow/filters/ImageFilterRS.java
+++ b/src/com/android/gallery3d/filtershow/filters/ImageFilterRS.java
@@ -89,6 +89,11 @@ public abstract class ImageFilterRS extends ImageFilter {
Log.e(LOGTAG, "Illegal argument? " + e);
} catch (android.renderscript.RSRuntimeException e) {
Log.e(LOGTAG, "RS runtime exception ? " + e);
+ } catch (java.lang.OutOfMemoryError e) {
+ // Many of the renderscript filters allocated large (>16Mb resources) in order to apply.
+ System.gc();
+ displayLowMemoryToast();
+ Log.e(LOGTAG, "not enough memory for filter " + getName(), e);
}
return bitmap;
}