summaryrefslogtreecommitdiff
path: root/graphics/java/android/renderscript/RenderScript.java
diff options
context:
space:
mode:
authorTim Murray <timmurray@google.com>2013-08-22 14:55:26 -0700
committerTim Murray <timmurray@google.com>2013-08-23 13:35:19 -0700
commit2f2472c42be8e80f00019594036744d902e09dcb (patch)
tree2f36a019cf92994293e66cd54b897ae04c7f4e1d /graphics/java/android/renderscript/RenderScript.java
parent2365745855ac4725949ebe9bae72fdc0613bb94f (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.java14
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;