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

Commit 87dd528b authored by Michael Lentine's avatar Michael Lentine Committed by Dan Stoza
Browse files

Modify EGL to disconnect the window when the surface gets destroyed.

Bug: 14445579

Change-Id: I1d263ff6cffcb6e448761fca7ca4b06466ad65aa
(cherry picked from commit 00699fa6)
parent c2bdfb86
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -914,8 +914,8 @@ status_t BufferQueueProducer::disconnect(int api) {
                    mCore->mSidebandStream.clear();
                    mCore->mDequeueCondition.broadcast();
                    listener = mCore->mConsumerListener;
                } else {
                    BQ_LOGE("disconnect(P): connected to another API "
                } else if (mCore->mConnectedApi != BufferQueueCore::NO_CONNECTED_API) {
                    BQ_LOGE("disconnect(P): still connected to another API "
                            "(cur=%d req=%d)", mCore->mConnectedApi, api);
                    status = BAD_VALUE;
                }
+9 −0
Original line number Diff line number Diff line
@@ -562,6 +562,15 @@ EGLBoolean eglDestroySurface(EGLDisplay dpy, EGLSurface surface)
        return setError(EGL_BAD_SURFACE, EGL_FALSE);

    egl_surface_t * const s = get_surface(surface);
    ANativeWindow* window = s->win.get();
    if (window) {
        int result = native_window_api_disconnect(window, NATIVE_WINDOW_API_EGL);
        if (result != OK) {
            ALOGE("eglDestroySurface: native_window_api_disconnect (win=%p) "
                  "failed (%#x)",
                  window, result);
        }
    }
    EGLBoolean result = s->cnx->egl.eglDestroySurface(dp->disp.dpy, s->surface);
    if (result == EGL_TRUE) {
        _s.terminate();