diff options
Diffstat (limited to 'src/com/android/gallery3d/filtershow/filters/ImageFilterRS.java')
-rw-r--r-- | src/com/android/gallery3d/filtershow/filters/ImageFilterRS.java | 30 |
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; } } |