Merge "Fixed BaseObj finalizer and destroy()" into nyc-dev
diff --git a/rs/java/android/renderscript/Allocation.java b/rs/java/android/renderscript/Allocation.java
index 04ea8e5..c0ea132 100644
--- a/rs/java/android/renderscript/Allocation.java
+++ b/rs/java/android/renderscript/Allocation.java
@@ -392,8 +392,6 @@
protected void finalize() throws Throwable {
RenderScript.registerNativeFree.invoke(RenderScript.sRuntime, mSize);
- // Set mType null to avoid double-destroying it in case its finalizer races ahead
- mType = null;
super.finalize();
}
@@ -2615,7 +2613,6 @@
if (mType != null && mOwningType) {
mType.destroy();
- mType = null;
}
super.destroy();
diff --git a/rs/java/android/renderscript/ScriptGroup.java b/rs/java/android/renderscript/ScriptGroup.java
index 0d10c6d..e0bdbfc 100644
--- a/rs/java/android/renderscript/ScriptGroup.java
+++ b/rs/java/android/renderscript/ScriptGroup.java
@@ -1066,19 +1066,12 @@
*/
public void destroy() {
super.destroy();
- for(Closure c : mClosures) {
- c.destroy();
- }
- }
-
- protected void finalize() throws Throwable {
- // Clear out the list mClosures to avoid double-destroying the closures,
- // in case their finalizers race ahead.
+ // ScriptGroup created using the old Builder class does not
+ // initialize the field mClosures
if (mClosures != null) {
- // ScriptGroup created using the old Builder class does not
- // initialize the field mClosures
- mClosures.clear();
+ for (Closure c : mClosures) {
+ c.destroy();
+ }
}
- super.finalize();
}
}