diff options
| author | 2016-11-10 01:51:24 +0000 | |
|---|---|---|
| committer | 2016-11-10 03:17:08 +0000 | |
| commit | c5bf8bc74d17dbf9737979ec8c339e2feb85ccec (patch) | |
| tree | 58b4798f15b8fe8d64c59f3d5e14a00ebbc0bbba | |
| parent | 80e6d8873b79ced40e79fcba0bf793ea6528d20c (diff) | |
DO NOT MERGE ANYWHERE Revert "DO NOT MERGE ANYWHERE libhwui: make setSurface asynchronous"
This reverts commit 80e6d8873b79ced40e79fcba0bf793ea6528d20c.
Bug: 32771832
Change-Id: Ia2f2ffd08dfd87cbce1ec750d6b61277799b536f
| -rw-r--r-- | core/java/android/view/ThreadedRenderer.java | 5 | ||||
| -rw-r--r-- | core/jni/android_view_ThreadedRenderer.cpp | 6 | ||||
| -rw-r--r-- | libs/hwui/renderthread/CanvasContext.cpp | 5 | ||||
| -rw-r--r-- | libs/hwui/renderthread/CanvasContext.h | 2 | ||||
| -rw-r--r-- | libs/hwui/renderthread/RenderProxy.cpp | 7 | ||||
| -rw-r--r-- | libs/hwui/renderthread/RenderProxy.h | 2 |
6 files changed, 13 insertions, 14 deletions
diff --git a/core/java/android/view/ThreadedRenderer.java b/core/java/android/view/ThreadedRenderer.java index db147ab51263..f6119e2898f0 100644 --- a/core/java/android/view/ThreadedRenderer.java +++ b/core/java/android/view/ThreadedRenderer.java @@ -145,10 +145,9 @@ public class ThreadedRenderer extends HardwareRenderer { @Override boolean initialize(Surface surface) throws OutOfResourcesException { - boolean status = !mInitialized; mInitialized = true; updateEnabledState(surface); - nInitialize(mNativeProxy, surface); + boolean status = nInitialize(mNativeProxy, surface); return status; } @@ -504,7 +503,7 @@ public class ThreadedRenderer extends HardwareRenderer { private static native boolean nLoadSystemProperties(long nativeProxy); private static native void nSetName(long nativeProxy, String name); - private static native void nInitialize(long nativeProxy, Surface window); + private static native boolean nInitialize(long nativeProxy, Surface window); private static native void nUpdateSurface(long nativeProxy, Surface window); private static native boolean nPauseSurface(long nativeProxy, Surface window); private static native void nSetup(long nativeProxy, int width, int height, diff --git a/core/jni/android_view_ThreadedRenderer.cpp b/core/jni/android_view_ThreadedRenderer.cpp index 7400ef04bbcd..47132f40be21 100644 --- a/core/jni/android_view_ThreadedRenderer.cpp +++ b/core/jni/android_view_ThreadedRenderer.cpp @@ -262,11 +262,11 @@ static void android_view_ThreadedRenderer_setName(JNIEnv* env, jobject clazz, env->ReleaseStringUTFChars(jname, name); } -static void android_view_ThreadedRenderer_initialize(JNIEnv* env, jobject clazz, +static jboolean android_view_ThreadedRenderer_initialize(JNIEnv* env, jobject clazz, jlong proxyPtr, jobject jsurface) { RenderProxy* proxy = reinterpret_cast<RenderProxy*>(proxyPtr); sp<ANativeWindow> window = android_view_Surface_getNativeWindow(env, jsurface); - proxy->initialize(window); + return proxy->initialize(window); } static void android_view_ThreadedRenderer_updateSurface(JNIEnv* env, jobject clazz, @@ -461,7 +461,7 @@ static JNINativeMethod gMethods[] = { { "nDeleteProxy", "(J)V", (void*) android_view_ThreadedRenderer_deleteProxy }, { "nLoadSystemProperties", "(J)Z", (void*) android_view_ThreadedRenderer_loadSystemProperties }, { "nSetName", "(JLjava/lang/String;)V", (void*) android_view_ThreadedRenderer_setName }, - { "nInitialize", "(JLandroid/view/Surface;)V", (void*) android_view_ThreadedRenderer_initialize }, + { "nInitialize", "(JLandroid/view/Surface;)Z", (void*) android_view_ThreadedRenderer_initialize }, { "nUpdateSurface", "(JLandroid/view/Surface;)V", (void*) android_view_ThreadedRenderer_updateSurface }, { "nPauseSurface", "(JLandroid/view/Surface;)Z", (void*) android_view_ThreadedRenderer_pauseSurface }, { "nSetup", "(JIIFII)V", (void*) android_view_ThreadedRenderer_setup }, diff --git a/libs/hwui/renderthread/CanvasContext.cpp b/libs/hwui/renderthread/CanvasContext.cpp index 57e5832ff752..4cf8b152ed40 100644 --- a/libs/hwui/renderthread/CanvasContext.cpp +++ b/libs/hwui/renderthread/CanvasContext.cpp @@ -110,11 +110,12 @@ void CanvasContext::setSwapBehavior(SwapBehavior swapBehavior) { mSwapBehavior = swapBehavior; } -void CanvasContext::initialize(ANativeWindow* window) { +bool CanvasContext::initialize(ANativeWindow* window) { setSurface(window); - if (mCanvas) return; + if (mCanvas) return false; mCanvas = new OpenGLRenderer(mRenderThread.renderState()); mCanvas->initProperties(); + return true; } void CanvasContext::updateSurface(ANativeWindow* window) { diff --git a/libs/hwui/renderthread/CanvasContext.h b/libs/hwui/renderthread/CanvasContext.h index 1e6f830dbeb2..f2fa9cdcbefd 100644 --- a/libs/hwui/renderthread/CanvasContext.h +++ b/libs/hwui/renderthread/CanvasContext.h @@ -67,7 +67,7 @@ public: // Won't take effect until next EGLSurface creation void setSwapBehavior(SwapBehavior swapBehavior); - void initialize(ANativeWindow* window); + bool initialize(ANativeWindow* window); void updateSurface(ANativeWindow* window); bool pauseSurface(ANativeWindow* window); bool hasSurface() { return mNativeWindow.get(); } diff --git a/libs/hwui/renderthread/RenderProxy.cpp b/libs/hwui/renderthread/RenderProxy.cpp index 30f0073fd1f0..6d9acd429279 100644 --- a/libs/hwui/renderthread/RenderProxy.cpp +++ b/libs/hwui/renderthread/RenderProxy.cpp @@ -140,15 +140,14 @@ void RenderProxy::setName(const char* name) { } CREATE_BRIDGE2(initialize, CanvasContext* context, ANativeWindow* window) { - args->context->initialize(args->window); - return nullptr; + return (void*) args->context->initialize(args->window); } -void RenderProxy::initialize(const sp<ANativeWindow>& window) { +bool RenderProxy::initialize(const sp<ANativeWindow>& window) { SETUP_TASK(initialize); args->context = mContext; args->window = window.get(); - post(task); + return (bool) postAndWait(task); } CREATE_BRIDGE2(updateSurface, CanvasContext* context, ANativeWindow* window) { diff --git a/libs/hwui/renderthread/RenderProxy.h b/libs/hwui/renderthread/RenderProxy.h index db03b29f134b..5febbe0ab26c 100644 --- a/libs/hwui/renderthread/RenderProxy.h +++ b/libs/hwui/renderthread/RenderProxy.h @@ -67,7 +67,7 @@ public: ANDROID_API bool loadSystemProperties(); ANDROID_API void setName(const char* name); - ANDROID_API void initialize(const sp<ANativeWindow>& window); + ANDROID_API bool initialize(const sp<ANativeWindow>& window); ANDROID_API void updateSurface(const sp<ANativeWindow>& window); ANDROID_API bool pauseSurface(const sp<ANativeWindow>& window); ANDROID_API void setup(int width, int height, float lightRadius, |