summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornicolasroard <nicolasroard@google.com>2013-03-28 16:34:52 -0700
committernicolasroard <nicolasroard@google.com>2013-03-28 19:50:18 -0700
commitb782f6d9e38c84124735044708246112e62ddc9a (patch)
treec756393c033e62a9406eac88faad4ffb37c2c8d1
parent2a68debc4c7a285dff36c7639387fed1e8e02b45 (diff)
downloadandroid_packages_apps_Snap-b782f6d9e38c84124735044708246112e62ddc9a.tar.gz
android_packages_apps_Snap-b782f6d9e38c84124735044708246112e62ddc9a.tar.bz2
android_packages_apps_Snap-b782f6d9e38c84124735044708246112e62ddc9a.zip
Re-enable caching step in RS filters
Bug: 8478659 Bug: 8459181 Bug: 8450339 Bug: 8457323 With the compatibility library, different Scripts instances actually points to the same thing. We thus need to explicitely rebind all the variables to the correct script instance before running RS filters... Change-Id: Id6cd4e44b5a67a3d2588e158c616b2b44e214a5b
-rw-r--r--src/com/android/gallery3d/filtershow/filters/ImageFilterRS.java16
-rw-r--r--src/com/android/gallery3d/filtershow/filters/ImageFilterSharpen.java18
-rw-r--r--src/com/android/gallery3d/filtershow/presets/FilterEnvironment.java1
3 files changed, 23 insertions, 12 deletions
diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterRS.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterRS.java
index c76f7dda6..2aeaed877 100644
--- a/src/com/android/gallery3d/filtershow/filters/ImageFilterRS.java
+++ b/src/com/android/gallery3d/filtershow/filters/ImageFilterRS.java
@@ -64,13 +64,16 @@ public abstract class ImageFilterRS extends ImageFilter {
if (DEBUG) {
Log.v(LOGTAG, "apply filter " + getName() + " in pipeline " + pipeline.getName());
}
- pipeline.prepareRenderscriptAllocations(bitmap);
Resources rsc = pipeline.getResources();
- createFilter(rsc, scaleFactor, quality);
- setResourcesLoaded(true);
+ if (pipeline.prepareRenderscriptAllocations(bitmap)
+ || !isResourcesLoaded()) {
+ freeResources();
+ createFilter(rsc, scaleFactor, quality);
+ setResourcesLoaded(true);
+ }
+ bindScriptValues();
runFilter();
update(bitmap);
- freeResources();
if (DEBUG) {
Log.v(LOGTAG, "DONE apply filter " + getName() + " in pipeline " + pipeline.getName());
}
@@ -158,6 +161,11 @@ public abstract class ImageFilterRS extends ImageFilter {
*/
abstract protected void resetScripts();
+ /**
+ * Scripts values should be bound here
+ */
+ abstract protected void bindScriptValues();
+
public void freeResources() {
if (!isResourcesLoaded()) {
return;
diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterSharpen.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterSharpen.java
index f545cd986..76ae475ac 100644
--- a/src/com/android/gallery3d/filtershow/filters/ImageFilterSharpen.java
+++ b/src/com/android/gallery3d/filtershow/filters/ImageFilterSharpen.java
@@ -22,7 +22,6 @@ public class ImageFilterSharpen extends ImageFilterRS {
private static final String LOGTAG = "ImageFilterSharpen";
private ScriptC_convolve3x3 mScript;
- float mScaleFactor;
private FilterBasicRepresentation mParameters;
@@ -63,19 +62,14 @@ public class ImageFilterSharpen extends ImageFilterRS {
@Override
protected void createFilter(android.content.res.Resources res, float scaleFactor,
int quality) {
- int w = getInPixelsAllocation().getType().getX();
- int h = getInPixelsAllocation().getType().getY();
- mScaleFactor = scaleFactor;
-
if (mScript == null) {
mScript = new ScriptC_convolve3x3(getRenderScriptContext(), res, R.raw.convolve3x3);
}
- mScript.set_gWidth(w);
- mScript.set_gHeight(h);
}
private void computeKernel() {
- float p1 = mParameters.getValue() * mScaleFactor;
+ float scaleFactor = getEnvironment().getScaleFactor();
+ float p1 = mParameters.getValue() * scaleFactor;
float value = p1 / 100.0f;
float f[] = new float[9];
float p = value;
@@ -92,6 +86,14 @@ public class ImageFilterSharpen extends ImageFilterRS {
}
@Override
+ protected void bindScriptValues() {
+ int w = getInPixelsAllocation().getType().getX();
+ int h = getInPixelsAllocation().getType().getY();
+ mScript.set_gWidth(w);
+ mScript.set_gHeight(h);
+ }
+
+ @Override
protected void runFilter() {
if (mParameters == null) {
return;
diff --git a/src/com/android/gallery3d/filtershow/presets/FilterEnvironment.java b/src/com/android/gallery3d/filtershow/presets/FilterEnvironment.java
index c45036012..b474b8412 100644
--- a/src/com/android/gallery3d/filtershow/presets/FilterEnvironment.java
+++ b/src/com/android/gallery3d/filtershow/presets/FilterEnvironment.java
@@ -77,4 +77,5 @@ public class FilterEnvironment {
public void setCachingPipeline(CachingPipeline cachingPipeline) {
mCachingPipeline = cachingPipeline;
}
+
}