diff options
author | Tim Murray <timmurray@google.com> | 2013-04-08 10:35:09 -0700 |
---|---|---|
committer | Tim Murray <timmurray@google.com> | 2013-04-08 14:50:18 -0700 |
commit | 1a28e2e4dab537a4efd7f11cdc2f038a9e37ea0a (patch) | |
tree | 48310a549aabe7fdf7b5909fe42aa9caa234843e /src | |
parent | ca13834b449c4586292ca9cc1853fd8e65884edd (diff) | |
download | android_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.java | 15 |
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; } |