diff options
| author | Romain Guy <romainguy@google.com> | 2010-08-31 11:51:08 -0700 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2010-08-31 11:51:08 -0700 |
| commit | 2cbe236138d1e8b003730087ee9c8e9ecca83795 (patch) | |
| tree | 42728f5d82dc4db4faa1deee6eafe4ac350f03f3 /core | |
| parent | 6b2a75751d93fb2a4124e979603d79634ac017e0 (diff) | |
| parent | da8532c6f48b4c10b5e2ccb9e08690341efa1616 (diff) | |
| download | frameworks_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.java | 25 | ||||
| -rw-r--r-- | core/jni/android_view_GLES20Canvas.cpp | 12 |
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 }, |
