From 1b4df1697f0d9b5dadfa1aca6c50d845d701ed2c Mon Sep 17 00:00:00 2001 From: Yang Ni Date: Wed, 20 Apr 2016 21:26:24 -0700 Subject: Fixed BaseObj finalizer and destroy() Bug: 28242626 Bug: 27972184 Bug: 27973681 This is resolving issues in ScriptGroup (V1) again. In ScriptGroup.destroy(), we also need to consider the old API where mClosures is not initialized. Also cleaned up the finalizer for ScriptGroup and Allocation: Since BaseObj.finalize() calls BaseObj.helpDestroy(), instead of BaseObj.destroy(), there is no possibility that the finalizers of child objects may race their parents finalizers. Note that helpDestroy() does not try to recurse on child objects. Change-Id: I9dbb2b60f8478f656f8a418c2b5fc8d6848aeef0 --- rs/java/android/renderscript/Allocation.java | 3 --- 1 file changed, 3 deletions(-) (limited to 'rs/java/android/renderscript/Allocation.java') diff --git a/rs/java/android/renderscript/Allocation.java b/rs/java/android/renderscript/Allocation.java index 04ea8e5a663f..c0ea1324602b 100644 --- a/rs/java/android/renderscript/Allocation.java +++ b/rs/java/android/renderscript/Allocation.java @@ -392,8 +392,6 @@ public class Allocation extends BaseObj { 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 @@ public class Allocation extends BaseObj { if (mType != null && mOwningType) { mType.destroy(); - mType = null; } super.destroy(); -- cgit v1.2.3