Fix a bug with VideoRendererOutputCapturer when extracting frames of different size

Currently, when the VideoRendererOutputCapturer updates output size, it will
set the new surface, then release the old surface. This can lead to problem
when both surface depends on EGL, since the second release() can release EGL
resources of the first surface.

This CL reverses this process, and ensures that the old surface is released before the new one is created.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=205235451
This commit is contained in:
hoangtc 2018-07-19 07:13:34 -07:00 committed by Oliver Woodman
parent a076924caa
commit ce62934861

View File

@ -149,6 +149,11 @@ public final class EGLSurfaceTexture implements SurfaceTexture.OnFrameAvailableL
if (Util.SDK_INT >= 19) { if (Util.SDK_INT >= 19) {
EGL14.eglReleaseThread(); EGL14.eglReleaseThread();
} }
if (display != null && !display.equals(EGL14.EGL_NO_DISPLAY)) {
// Android is unusual in that it uses a reference-counted EGLDisplay. So for
// every eglInitialize() we need an eglTerminate().
EGL14.eglTerminate(display);
}
display = null; display = null;
context = null; context = null;
surface = null; surface = null;