diff options
author | Tim Murray <timmurray@google.com> | 2013-08-22 14:55:26 -0700 |
---|---|---|
committer | Tim Murray <timmurray@google.com> | 2013-08-23 13:35:19 -0700 |
commit | 2f2472c42be8e80f00019594036744d902e09dcb (patch) | |
tree | 2f36a019cf92994293e66cd54b897ae04c7f4e1d /graphics/java/android/renderscript/RenderScript.java | |
parent | 2365745855ac4725949ebe9bae72fdc0613bb94f (diff) |
Add garbage collection hooks
bug 10428172
Change-Id: I6365aa58bbc99aa134e1f261a5819e07a7d70fb0
Diffstat (limited to 'graphics/java/android/renderscript/RenderScript.java')
-rw-r--r-- | graphics/java/android/renderscript/RenderScript.java | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/graphics/java/android/renderscript/RenderScript.java b/graphics/java/android/renderscript/RenderScript.java index 4de4766577c4..854f07928bd0 100644 --- a/graphics/java/android/renderscript/RenderScript.java +++ b/graphics/java/android/renderscript/RenderScript.java @@ -18,6 +18,7 @@ package android.renderscript; import java.io.File; import java.lang.reflect.Field; +import java.lang.reflect.Method; import android.content.Context; import android.content.pm.ApplicationInfo; @@ -61,11 +62,24 @@ public class RenderScript { static boolean sInitialized; native static void _nInit(); + static Object sRuntime; + static Method registerNativeAllocation; + static Method registerNativeFree; static { sInitialized = false; if (!SystemProperties.getBoolean("config.disable_renderscript", false)) { try { + Class<?> vm_runtime = Class.forName("dalvik.system.VMRuntime"); + Method get_runtime = vm_runtime.getDeclaredMethod("getRuntime"); + sRuntime = get_runtime.invoke(null); + registerNativeAllocation = vm_runtime.getDeclaredMethod("registerNativeAllocation", Integer.TYPE); + registerNativeFree = vm_runtime.getDeclaredMethod("registerNativeFree", Integer.TYPE); + } catch (Exception e) { + Log.e(LOG_TAG, "Error loading GC methods: " + e); + throw new RSRuntimeException("Error loading GC methods: " + e); + } + try { System.loadLibrary("rs_jni"); _nInit(); sInitialized = true; |