summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTim Murray <timmurray@google.com>2013-04-08 10:35:09 -0700
committerTim Murray <timmurray@google.com>2013-04-08 14:50:18 -0700
commit1a28e2e4dab537a4efd7f11cdc2f038a9e37ea0a (patch)
tree48310a549aabe7fdf7b5909fe42aa9caa234843e /src
parentca13834b449c4586292ca9cc1853fd8e65884edd (diff)
downloadandroid_packages_apps_Snap-1a28e2e4dab537a4efd7f11cdc2f038a9e37ea0a.tar.gz
android_packages_apps_Snap-1a28e2e4dab537a4efd7f11cdc2f038a9e37ea0a.tar.bz2
android_packages_apps_Snap-1a28e2e4dab537a4efd7f11cdc2f038a9e37ea0a.zip
Limit creation of greyscale converter RS script.
Change-Id: I2725ae6cb5ba829fec61dce114513762fce53067
Diffstat (limited to 'src')
-rw-r--r--src/com/android/gallery3d/filtershow/filters/ImageFilterRS.java15
1 files changed, 11 insertions, 4 deletions
diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterRS.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterRS.java
index a0523c14e..014a11f9e 100644
--- a/src/com/android/gallery3d/filtershow/filters/ImageFilterRS.java
+++ b/src/com/android/gallery3d/filtershow/filters/ImageFilterRS.java
@@ -30,6 +30,9 @@ public abstract class ImageFilterRS extends ImageFilter {
private int mLastInputWidth = 0;
private int mLastInputHeight = 0;
+ private static ScriptC_grey mGreyConvert = null;
+ private static RenderScript mRScache = null;
+
private volatile boolean mResourcesLoaded = false;
protected abstract void createFilter(android.content.res.Resources res,
@@ -106,9 +109,13 @@ public abstract class ImageFilterRS extends ImageFilter {
private static Allocation convertRGBAtoA(Bitmap bitmap) {
RenderScript RS = CachingPipeline.getRenderScriptContext();
+ if (RS != mRScache || mGreyConvert == null) {
+ mGreyConvert = new ScriptC_grey(RS, RS.getApplicationContext().getResources(),
+ R.raw.grey);
+ mRScache = RS;
+ }
+
Type.Builder tb_a8 = new Type.Builder(RS, Element.A_8(RS));
- ScriptC_grey greyConvert = new ScriptC_grey(RS,
- RS.getApplicationContext().getResources(), R.raw.grey);
Allocation bitmapTemp = convertBitmap(bitmap);
if (bitmapTemp.getType().getElement().isCompatible(Element.A_8(RS))) {
@@ -118,8 +125,8 @@ public abstract class ImageFilterRS extends ImageFilter {
tb_a8.setX(bitmapTemp.getType().getX());
tb_a8.setY(bitmapTemp.getType().getY());
Allocation bitmapAlloc = Allocation.createTyped(RS, tb_a8.create());
- greyConvert.forEach_RGBAtoA(bitmapTemp, bitmapAlloc);
-
+ mGreyConvert.forEach_RGBAtoA(bitmapTemp, bitmapAlloc);
+ bitmapTemp.destroy();
return bitmapAlloc;
}