diff options
author | John Reck <jreck@google.com> | 2014-04-09 10:01:03 -0700 |
---|---|---|
committer | John Reck <jreck@google.com> | 2014-04-09 11:01:29 -0700 |
commit | f7d9c1dc84671d4e99657ef071d275700d85bb11 (patch) | |
tree | b1e43d969a44162bd6a1db1b702207019ec32286 /core/jni | |
parent | 10bdb4b9e966f0a3d8e1099bf8eff4c41c31981c (diff) | |
download | frameworks_base-f7d9c1dc84671d4e99657ef071d275700d85bb11.zip frameworks_base-f7d9c1dc84671d4e99657ef071d275700d85bb11.tar.gz frameworks_base-f7d9c1dc84671d4e99657ef071d275700d85bb11.tar.bz2 |
Fix ThreadedRenderer.setEnabled()
Bug: 13914116
Fixes lifecycle issues around setEnabled where ThreadedRenderer
was reporting as being enabled before it had a Surface. This is
incorrect.
Also fix some EGL lifecycle issues
Change-Id: I12ebb279707f9b533a570b61d68735d858b560bf
Diffstat (limited to 'core/jni')
-rw-r--r-- | core/jni/android_view_ThreadedRenderer.cpp | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/core/jni/android_view_ThreadedRenderer.cpp b/core/jni/android_view_ThreadedRenderer.cpp index 32890cf..20a61bf 100644 --- a/core/jni/android_view_ThreadedRenderer.cpp +++ b/core/jni/android_view_ThreadedRenderer.cpp @@ -84,7 +84,7 @@ static jboolean android_view_ThreadedRenderer_initialize(JNIEnv* env, jobject cl jlong proxyPtr, jobject jsurface) { RenderProxy* proxy = reinterpret_cast<RenderProxy*>(proxyPtr); sp<ANativeWindow> window = android_view_Surface_getNativeWindow(env, jsurface); - return proxy->initialize(window.get()); + return proxy->initialize(window); } static void android_view_ThreadedRenderer_updateSurface(JNIEnv* env, jobject clazz, @@ -94,7 +94,17 @@ static void android_view_ThreadedRenderer_updateSurface(JNIEnv* env, jobject cla if (jsurface) { window = android_view_Surface_getNativeWindow(env, jsurface); } - proxy->updateSurface(window.get()); + proxy->updateSurface(window); +} + +static void android_view_ThreadedRenderer_pauseSurface(JNIEnv* env, jobject clazz, + jlong proxyPtr, jobject jsurface) { + RenderProxy* proxy = reinterpret_cast<RenderProxy*>(proxyPtr); + sp<ANativeWindow> window; + if (jsurface) { + window = android_view_Surface_getNativeWindow(env, jsurface); + } + proxy->pauseSurface(window); } static void android_view_ThreadedRenderer_setup(JNIEnv* env, jobject clazz, @@ -203,6 +213,7 @@ static JNINativeMethod gMethods[] = { { "nDeleteProxy", "(J)V", (void*) android_view_ThreadedRenderer_deleteProxy }, { "nInitialize", "(JLandroid/view/Surface;)Z", (void*) android_view_ThreadedRenderer_initialize }, { "nUpdateSurface", "(JLandroid/view/Surface;)V", (void*) android_view_ThreadedRenderer_updateSurface }, + { "nPauseSurface", "(JLandroid/view/Surface;)V", (void*) android_view_ThreadedRenderer_pauseSurface }, { "nSetup", "(JII)V", (void*) android_view_ThreadedRenderer_setup }, { "nSetDisplayListData", "(JJJ)V", (void*) android_view_ThreadedRenderer_setDisplayListData }, { "nDrawDisplayList", "(JJIIII)V", (void*) android_view_ThreadedRenderer_drawDisplayList }, |