summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorRomain Guy <romainguy@google.com>2010-08-31 11:51:08 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2010-08-31 11:51:08 -0700
commit2cbe236138d1e8b003730087ee9c8e9ecca83795 (patch)
tree42728f5d82dc4db4faa1deee6eafe4ac350f03f3 /core
parent6b2a75751d93fb2a4124e979603d79634ac017e0 (diff)
parentda8532c6f48b4c10b5e2ccb9e08690341efa1616 (diff)
downloadframeworks_base-2cbe236138d1e8b003730087ee9c8e9ecca83795.zip
frameworks_base-2cbe236138d1e8b003730087ee9c8e9ecca83795.tar.gz
frameworks_base-2cbe236138d1e8b003730087ee9c8e9ecca83795.tar.bz2
Merge "Add hooks for hardware accelerated WebView."
Diffstat (limited to 'core')
-rw-r--r--core/java/android/view/GLES20Canvas.java25
-rw-r--r--core/jni/android_view_GLES20Canvas.cpp12
2 files changed, 36 insertions, 1 deletions
diff --git a/core/java/android/view/GLES20Canvas.java b/core/java/android/view/GLES20Canvas.java
index b058685..65cb182 100644
--- a/core/java/android/view/GLES20Canvas.java
+++ b/core/java/android/view/GLES20Canvas.java
@@ -55,7 +55,9 @@ class GLES20Canvas extends Canvas {
private final Rect mClipBounds = new Rect();
private DrawFilter mFilter;
-
+
+ private boolean mContextLocked;
+
///////////////////////////////////////////////////////////////////////////
// JNI
///////////////////////////////////////////////////////////////////////////
@@ -149,6 +151,27 @@ class GLES20Canvas extends Canvas {
private native void nPrepare(int renderer);
+ @Override
+ public boolean acquireContext() {
+ if (!mContextLocked) {
+ nAcquireContext(mRenderer);
+ mContextLocked = true;
+ }
+ return mContextLocked;
+ }
+
+ private native void nAcquireContext(int renderer);
+
+ @Override
+ public void releaseContext() {
+ if (mContextLocked) {
+ nReleaseContext(mRenderer);
+ mContextLocked = false;
+ }
+ }
+
+ private native void nReleaseContext(int renderer);
+
///////////////////////////////////////////////////////////////////////////
// Clipping
///////////////////////////////////////////////////////////////////////////
diff --git a/core/jni/android_view_GLES20Canvas.cpp b/core/jni/android_view_GLES20Canvas.cpp
index 98c03a6..aa71746 100644
--- a/core/jni/android_view_GLES20Canvas.cpp
+++ b/core/jni/android_view_GLES20Canvas.cpp
@@ -84,6 +84,16 @@ static void android_view_GLES20Canvas_prepare(JNIEnv* env, jobject canvas,
renderer->prepare();
}
+static void android_view_GLES20Canvas_acquireContext(JNIEnv* env, jobject canvas,
+ OpenGLRenderer* renderer) {
+ renderer->acquireContext();
+}
+
+static void android_view_GLES20Canvas_releaseContext(JNIEnv* env, jobject canvas,
+ OpenGLRenderer* renderer) {
+ renderer->releaseContext();
+}
+
// ----------------------------------------------------------------------------
// State
// ----------------------------------------------------------------------------
@@ -374,6 +384,8 @@ static JNINativeMethod gMethods[] = {
{ "nDestroyRenderer", "(I)V", (void*) android_view_GLES20Canvas_destroyRenderer },
{ "nSetViewport", "(III)V", (void*) android_view_GLES20Canvas_setViewport },
{ "nPrepare", "(I)V", (void*) android_view_GLES20Canvas_prepare },
+ { "nAcquireContext", "(I)V", (void*) android_view_GLES20Canvas_acquireContext },
+ { "nReleaseContext", "(I)V", (void*) android_view_GLES20Canvas_releaseContext },
{ "nSave", "(II)I", (void*) android_view_GLES20Canvas_save },
{ "nRestore", "(I)V", (void*) android_view_GLES20Canvas_restore },