• Alexis Hetu's avatar
    Y and UV planes release mechanism fix · 612d357c
    Alexis Hetu authored
    The Y and UV planes weren't getting released properly because the local
    variables used in base::RetainBlock() are snapshots of their current
    values and do not get updated by subsequent code. In this case,
    y_surface and uv_surface would always be at their original value of
    EGL_NO_SURFACE and eglReleaseTexImage/eglDestroySurface would never get
    called. Using pointers to these values solves the issue, since the
    pointers do not get modified by subsequent code and the values can be
    checked properly by dereferencing the pointers.
    
    Bug: chromium:932986 chromium:929088
    Change-Id: Id0b9fcc79af733b645eaf8fed12d905dd40e9fbc
    Reviewed-on: https://chromium-review.googlesource.com/c/1483690Reviewed-by: default avatarAntoine Labour <piman@chromium.org>
    Reviewed-by: default avatarKenneth Russell <kbr@chromium.org>
    Commit-Queue: Alexis Hétu <sugoi@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#634837}
    612d357c
gl_image_io_surface_egl.mm 9.79 KB