diff options
author | Ruben Brunk <rubenbrunk@google.com> | 2013-02-22 13:25:51 -0800 |
---|---|---|
committer | Ruben Brunk <rubenbrunk@google.com> | 2013-02-22 13:54:37 -0800 |
commit | 5ebc5b3bc483b6c16aab9138995bb83f81ffc0c1 (patch) | |
tree | 6157a8416d43cacc91729b217daa30946a3b560e /src/com/android/gallery3d/filtershow/filters | |
parent | 8d363f83371b18bef02ad7aeeacc5060f3097c96 (diff) | |
download | android_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.java | 30 | ||||
-rw-r--r-- | src/com/android/gallery3d/filtershow/filters/ImageFilterRS.java | 5 |
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; } |