Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c5bf8bc7 authored by Andriy Naborskyy's avatar Andriy Naborskyy
Browse files

DO NOT MERGE ANYWHERE Revert "DO NOT MERGE ANYWHERE libhwui: make setSurface asynchronous"

This reverts commit 80e6d887.

Bug: 32771832

Change-Id: Ia2f2ffd08dfd87cbce1ec750d6b61277799b536f
parent 80e6d887
Loading
Loading
Loading
Loading
+2 −3
Original line number Diff line number Diff line
@@ -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,
+3 −3
Original line number Diff line number Diff line
@@ -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 },
+3 −2
Original line number Diff line number Diff line
@@ -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) {
+1 −1
Original line number Diff line number Diff line
@@ -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(); }
+3 −4
Original line number Diff line number Diff line
@@ -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) {
Loading