From e272b25aa9ec1ada8b69bb7fe71ca284a50571f0 Mon Sep 17 00:00:00 2001 From: Mathias Agopian Date: Tue, 25 Sep 2012 19:16:28 -0700 Subject: [PATCH] only abort when errors happen on the main display Bug: 7232690 Change-Id: I2c4b35a82f131da26deea738ef294e100e536d15 --- services/surfaceflinger/DisplayDevice.cpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/services/surfaceflinger/DisplayDevice.cpp b/services/surfaceflinger/DisplayDevice.cpp index 56852dae3..47dd0735d 100644 --- a/services/surfaceflinger/DisplayDevice.cpp +++ b/services/surfaceflinger/DisplayDevice.cpp @@ -228,11 +228,14 @@ void DisplayDevice::swapBuffers(HWComposer& hwc) const { } } - // TODO: we should at least handle EGL_CONTEXT_LOST, by recreating the - // context and resetting our state. - LOG_ALWAYS_FATAL_IF(!success, - "eglSwapBuffers(%p, %p) failed with 0x%8x", - mDisplay, mSurface, eglGetError()); + if (!success) { + EGLint error = eglGetError(); + if (error == EGL_CONTEXT_LOST || + mType == DisplayDevice::DISPLAY_PRIMARY) { + LOG_ALWAYS_FATAL("eglSwapBuffers(%p, %p) failed with 0x%08x", + mDisplay, mSurface, eglGetError()); + } + } } void DisplayDevice::onSwapBuffersCompleted(HWComposer& hwc) const {