summaryrefslogtreecommitdiffstats
path: root/src/com/android/gallery3d/filtershow/filters/ImageFilterRS.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/gallery3d/filtershow/filters/ImageFilterRS.java')
-rw-r--r--src/com/android/gallery3d/filtershow/filters/ImageFilterRS.java30
1 files changed, 22 insertions, 8 deletions
diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterRS.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterRS.java
index 368e29a78..d5297904d 100644
--- a/src/com/android/gallery3d/filtershow/filters/ImageFilterRS.java
+++ b/src/com/android/gallery3d/filtershow/filters/ImageFilterRS.java
@@ -21,7 +21,7 @@ import android.graphics.Bitmap;
import android.support.v8.renderscript.*;
import android.util.Log;
-public class ImageFilterRS extends ImageFilter {
+public abstract class ImageFilterRS extends ImageFilter {
private final String LOGTAG = "ImageFilterRS";
private static RenderScript mRS = null;
@@ -31,10 +31,13 @@ public class ImageFilterRS extends ImageFilter {
private static Bitmap sOldBitmap = null;
private Bitmap mOldBitmap = null;
- private static Bitmap mReturnBitmap = null;
private final Bitmap.Config mBitmapConfig = Bitmap.Config.ARGB_8888;
- public void prepare(Bitmap bitmap, float scaleFactor, boolean highQuality) {
+ public void resetBitmap() {
+ mOldBitmap = null;
+ }
+
+ public void prepare(Bitmap bitmap, float scaleFactor, int quality) {
if (sOldBitmap == null
|| (bitmap.getWidth() != sOldBitmap.getWidth())
|| (bitmap.getHeight() != sOldBitmap.getHeight())) {
@@ -53,13 +56,13 @@ public class ImageFilterRS extends ImageFilter {
}
mInPixelsAllocation.copyFrom(bitmap);
if (mOldBitmap != sOldBitmap) {
- createFilter(mResources, scaleFactor, highQuality);
+ createFilter(mResources, scaleFactor, quality);
mOldBitmap = sOldBitmap;
}
}
public void createFilter(android.content.res.Resources res,
- float scaleFactor, boolean highQuality) {
+ float scaleFactor, int quality) {
// Stub
}
@@ -72,12 +75,12 @@ public class ImageFilterRS extends ImageFilter {
}
@Override
- public Bitmap apply(Bitmap bitmap, float scaleFactor, boolean highQuality) {
+ public Bitmap apply(Bitmap bitmap, float scaleFactor, int quality) {
if (bitmap == null) {
return bitmap;
}
try {
- prepare(bitmap, scaleFactor, highQuality);
+ prepare(bitmap, scaleFactor, quality);
runFilter();
update(bitmap);
} catch (android.renderscript.RSIllegalArgumentException e) {
@@ -93,8 +96,19 @@ public class ImageFilterRS extends ImageFilter {
}
public static void setRenderScriptContext(Activity context) {
- mRS = RenderScript.create(context);
+ if (mRS == null) {
+ mRS = RenderScript.create(context);
+ }
mResources = context.getResources();
+ if (mInPixelsAllocation != null) {
+ mInPixelsAllocation.destroy();
+ mInPixelsAllocation = null;
+ }
+ if (mOutPixelsAllocation != null) {
+ mOutPixelsAllocation.destroy();
+ mOutPixelsAllocation = null;
+ }
+ sOldBitmap = null;
}
}