summaryrefslogtreecommitdiffstats
path: root/core/jni
diff options
context:
space:
mode:
authorJohn Reck <jreck@google.com>2014-03-28 20:30:27 -0700
committerJohn Reck <jreck@google.com>2014-03-28 20:57:32 -0700
commit0d1f634f4b5e1bb37aa51777efb6a68619488d01 (patch)
treed936b60a47e95c58e7c47363b6e23cdc8b4df7d9 /core/jni
parentc75db8266b352ef3a7a6b76654f770d7a24d547a (diff)
downloadframeworks_base-0d1f634f4b5e1bb37aa51777efb6a68619488d01.zip
frameworks_base-0d1f634f4b5e1bb37aa51777efb6a68619488d01.tar.gz
frameworks_base-0d1f634f4b5e1bb37aa51777efb6a68619488d01.tar.bz2
Add invokeFunctor
Change-Id: I09e675d3e02e3e528642175ada00b2b17fab7652
Diffstat (limited to 'core/jni')
-rw-r--r--core/jni/android_view_GLRenderer.cpp11
-rw-r--r--core/jni/android_view_ThreadedRenderer.cpp8
2 files changed, 19 insertions, 0 deletions
diff --git a/core/jni/android_view_GLRenderer.cpp b/core/jni/android_view_GLRenderer.cpp
index e45c1b9..180c625 100644
--- a/core/jni/android_view_GLRenderer.cpp
+++ b/core/jni/android_view_GLRenderer.cpp
@@ -26,6 +26,8 @@
#include <utils/Timers.h>
+#include <private/hwui/DrawGlInfo.h>
+
#include <Caches.h>
#include <Extensions.h>
#include <LayerRenderer.h>
@@ -155,6 +157,14 @@ static void android_view_GLRenderer_updateRenderNodeProperties(JNIEnv* env, jobj
renderNode->updateProperties();
}
+static void android_view_GLRenderer_invokeFunctor(JNIEnv* env, jobject clazz,
+ jlong functorPtr, jboolean hasContext) {
+ using namespace android::uirenderer;
+ Functor* functor = reinterpret_cast<Functor*>(functorPtr);
+ DrawGlInfo::Mode mode = hasContext ? DrawGlInfo::kModeProcess : DrawGlInfo::kModeProcessNoContext;
+ (*functor)(mode, NULL);
+}
+
#endif // USE_OPENGL_RENDERER
// ----------------------------------------------------------------------------
@@ -187,6 +197,7 @@ static JNINativeMethod gMethods[] = {
{ "nDestroyLayer", "(J)V", (void*) android_view_GLRenderer_destroyLayer },
{ "nSetDisplayListData", "(JJ)V", (void*) android_view_GLRenderer_setDisplayListData },
{ "nUpdateRenderNodeProperties", "(J)V", (void*) android_view_GLRenderer_updateRenderNodeProperties },
+ { "nInvokeFunctor", "(JZ)V", (void*) android_view_GLRenderer_invokeFunctor },
#endif
{ "setupShadersDiskCache", "(Ljava/lang/String;)V",
diff --git a/core/jni/android_view_ThreadedRenderer.cpp b/core/jni/android_view_ThreadedRenderer.cpp
index 28cee4b..98bec1b 100644
--- a/core/jni/android_view_ThreadedRenderer.cpp
+++ b/core/jni/android_view_ThreadedRenderer.cpp
@@ -139,6 +139,13 @@ static void android_view_ThreadedRenderer_detachFunctor(JNIEnv* env, jobject cla
proxy->detachFunctor(functor);
}
+static void android_view_ThreadedRenderer_invokeFunctor(JNIEnv* env, jobject clazz,
+ jlong proxyPtr, jlong functorPtr, jboolean waitForCompletion) {
+ RenderProxy* proxy = reinterpret_cast<RenderProxy*>(proxyPtr);
+ Functor* functor = reinterpret_cast<Functor*>(functorPtr);
+ proxy->invokeFunctor(functor, waitForCompletion);
+}
+
static void android_view_ThreadedRenderer_runWithGlContext(JNIEnv* env, jobject clazz,
jlong proxyPtr, jobject jrunnable) {
RenderProxy* proxy = reinterpret_cast<RenderProxy*>(proxyPtr);
@@ -196,6 +203,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 },
+ { "nInvokeFunctor", "(JJZ)V", (void*) android_view_ThreadedRenderer_invokeFunctor },
{ "nRunWithGlContext", "(JLjava/lang/Runnable;)V", (void*) android_view_ThreadedRenderer_runWithGlContext },
{ "nCreateDisplayListLayer", "(JII)J", (void*) android_view_ThreadedRenderer_createDisplayListLayer },
{ "nCreateTextureLayer", "(J)J", (void*) android_view_ThreadedRenderer_createTextureLayer },