OSDN Git Service

Fixed renderscript crashes.
authorRuben Brunk <rubenbrunk@google.com>
Wed, 27 Mar 2013 18:19:23 +0000 (11:19 -0700)
committerRuben Brunk <rubenbrunk@google.com>
Wed, 27 Mar 2013 18:32:17 +0000 (11:32 -0700)
Bug: 8478659
Bug: 8459181
Bug: 8450339
Bug: 8457323

createFilter() initializes a ton of parameters in the RenderScript
filters.  Using stale parameters from a previous call to createFilter()
causes segfaults.

Change-Id: Id54b956b7fe83be5089b1d47c3bedcca66237ddf

src/com/android/gallery3d/filtershow/filters/ImageFilterRS.java

index 56e848a..cff0711 100644 (file)
@@ -70,15 +70,12 @@ public abstract class ImageFilterRS extends ImageFilter {
                 if (DEBUG) {
                     Log.v(LOGTAG, "apply filter " + getName() + " in pipeline " + pipeline.getName());
                 }
-                boolean needsUpdate = pipeline.prepareRenderscriptAllocations(bitmap);
-                if (needsUpdate || !isResourcesLoaded()) {
-                    // the allocations changed size
-                    freeResources();
-                    createFilter(sResources, scaleFactor, quality);
-                    setResourcesLoaded(true);
-                }
+                pipeline.prepareRenderscriptAllocations(bitmap);
+                createFilter(sResources, scaleFactor, quality);
+                setResourcesLoaded(true);
                 runFilter();
                 update(bitmap);
+                freeResources();
                 if (DEBUG) {
                     Log.v(LOGTAG, "DONE apply filter " + getName() + " in pipeline " + pipeline.getName());
                 }