summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
Diffstat (limited to 'core')
-rw-r--r--core/java/android/view/ThreadedRenderer.java5
-rw-r--r--core/jni/android_view_ThreadedRenderer.cpp8
2 files changed, 11 insertions, 2 deletions
diff --git a/core/java/android/view/ThreadedRenderer.java b/core/java/android/view/ThreadedRenderer.java
index 1c20923..1d7e5b2 100644
--- a/core/java/android/view/ThreadedRenderer.java
+++ b/core/java/android/view/ThreadedRenderer.java
@@ -113,8 +113,8 @@ public class ThreadedRenderer extends HardwareRenderer {
@Override
boolean safelyRun(Runnable action) {
- // TODO:
- return false;
+ nRunWithGlContext(mNativeProxy, action);
+ return true;
}
@Override
@@ -256,6 +256,7 @@ public class ThreadedRenderer extends HardwareRenderer {
private static native void nSetup(long nativeProxy, int width, int height);
private static native void nDrawDisplayList(long nativeProxy, long displayList,
int dirtyLeft, int dirtyTop, int dirtyRight, int dirtyBottom);
+ private static native void nRunWithGlContext(long nativeProxy, Runnable runnable);
private static native void nDestroyCanvas(long nativeProxy);
private static native void nAttachFunctor(long nativeProxy, long functor);
diff --git a/core/jni/android_view_ThreadedRenderer.cpp b/core/jni/android_view_ThreadedRenderer.cpp
index 8e121de..e86a2d4 100644
--- a/core/jni/android_view_ThreadedRenderer.cpp
+++ b/core/jni/android_view_ThreadedRenderer.cpp
@@ -131,6 +131,13 @@ static void android_view_ThreadedRenderer_detachFunctor(JNIEnv* env, jobject cla
proxy->detachFunctor(functor);
}
+static void android_view_ThreadedRenderer_runWithGlContext(JNIEnv* env, jobject clazz,
+ jlong proxyPtr, jobject jrunnable) {
+ RenderProxy* proxy = reinterpret_cast<RenderProxy*>( proxyPtr);
+ RenderTask* task = new JavaTask(env, jrunnable);
+ proxy->runWithGlContext(task);
+}
+
#endif
// ----------------------------------------------------------------------------
@@ -151,6 +158,7 @@ static JNINativeMethod gMethods[] = {
{ "nDestroyCanvas", "(J)V", (void*) android_view_ThreadedRenderer_destroyCanvas},
{ "nAttachFunctor", "(JJ)V", (void*) android_view_ThreadedRenderer_attachFunctor},
{ "nDetachFunctor", "(JJ)V", (void*) android_view_ThreadedRenderer_detachFunctor},
+ { "nRunWithGlContext", "(JLjava/lang/Runnable;)V", (void*) android_view_ThreadedRenderer_runWithGlContext },
#endif
};