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

Commit f8b03602 authored by John Reck's avatar John Reck
Browse files

Fix EGLImage memory leak

Bug: 31247709
Change-Id: I9e36206b0d7bdb75b84cd53b70f7746ca34a3469
parent 57bd22ff
Loading
Loading
Loading
Loading
+10 −2
Original line number Diff line number Diff line
@@ -136,7 +136,7 @@ CopyResult Readback::copySurfaceInto(renderthread::RenderThread& renderThread,
            EGL_NATIVE_BUFFER_ANDROID, clientBuffer, attrs);

    if (sourceImage == EGL_NO_IMAGE_KHR) {
        ALOGW("Error creating image (%#x)", eglGetError());
        ALOGW("eglCreateImageKHR failed (%#x)", eglGetError());
        return CopyResult::UnknownError;
    }
    GLuint sourceTexId;
@@ -147,7 +147,8 @@ CopyResult Readback::copySurfaceInto(renderthread::RenderThread& renderThread,

    GLenum status = GL_NO_ERROR;
    while ((status = glGetError()) != GL_NO_ERROR) {
        ALOGW("Error creating image (%#x)", status);
        ALOGW("glEGLImageTargetTexture2DOES failed (%#x)", status);
        eglDestroyImageKHR(display, sourceImage);
        return CopyResult::UnknownError;
    }

@@ -183,6 +184,13 @@ CopyResult Readback::copySurfaceInto(renderthread::RenderThread& renderThread,
    caches.textureState().deleteTexture(texture);
    renderState.deleteFramebuffer(fbo);

    sourceTexture.deleteTexture();
    // All we're flushing & finishing is the deletion of the texture since
    // copyTextureInto already did a major flush & finish as an implicit
    // part of glReadPixels, so this shouldn't pose any major stalls.
    glFinish();
    eglDestroyImageKHR(display, sourceImage);

    GL_CHECKPOINT(MODERATE);

    return CopyResult::Success;