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

Commit 437e3931 authored by android-build-team Robot's avatar android-build-team Robot Committed by android-build-merger
Browse files

Merge "camera2/legacy: Fix expected errors on eglSwapBuffers" into pi-dev

am: a973d530

Change-Id: I4d494dc9d6a6e9043129ce09101bcfb81a8f869e
parents b734ceb9 a973d530
Loading
Loading
Loading
Loading
+24 −6
Original line number Diff line number Diff line
@@ -529,14 +529,32 @@ public class SurfaceTextureRenderer {
    private boolean swapBuffers(EGLSurface surface)
            throws LegacyExceptionUtils.BufferQueueAbandonedException {
        boolean result = EGL14.eglSwapBuffers(mEGLDisplay, surface);

        int error = EGL14.eglGetError();
        if (error == EGL14.EGL_BAD_SURFACE) {
        switch (error) {
            case EGL14.EGL_SUCCESS:
                return result;

            // Check for an abandoned buffer queue, or other error conditions out
            // of the user's control.
            //
            // From the EGL 1.4 spec (2013-12-04), Section 3.9.4 Posting Errors:
            //
            //   If eglSwapBuffers is called and the native window associated with
            //   surface is no longer valid, an EGL_BAD_NATIVE_WINDOW error is
            //   generated.
            //
            // We also interpret EGL_BAD_SURFACE as indicating an abandoned
            // surface, even though the EGL spec does not document it as such, for
            // backwards compatibility with older versions of this file.
            case EGL14.EGL_BAD_NATIVE_WINDOW:
            case EGL14.EGL_BAD_SURFACE:
                throw new LegacyExceptionUtils.BufferQueueAbandonedException();
        } else if (error != EGL14.EGL_SUCCESS) {
            throw new IllegalStateException("swapBuffers: EGL error: 0x" +
                    Integer.toHexString(error));

            default:
                throw new IllegalStateException(
                        "swapBuffers: EGL error: 0x" + Integer.toHexString(error));
        }
        return result;
    }

    private void checkEglError(String msg) {