Loading services/surfaceflinger/DisplayDevice.cpp +10 −3 Original line number Diff line number Diff line Loading @@ -205,27 +205,34 @@ void DisplayDevice::flip(const Region& dirty) const } void DisplayDevice::swapBuffers(HWComposer& hwc) const { EGLBoolean success = EGL_TRUE; if (hwc.initCheck() != NO_ERROR) { // no HWC, we call eglSwapBuffers() eglSwapBuffers(mDisplay, mSurface); success = eglSwapBuffers(mDisplay, mSurface); } else { // We have a valid HWC, but not all displays can use it, in particular // the virtual displays are on their own. // TODO: HWC 1.2 will allow virtual displays if (mType >= DisplayDevice::DISPLAY_VIRTUAL) { // always call eglSwapBuffers() for virtual displays eglSwapBuffers(mDisplay, mSurface); success = eglSwapBuffers(mDisplay, mSurface); } else if (hwc.supportsFramebufferTarget()) { // as of hwc 1.1 we always call eglSwapBuffers if we have some // GLES layers if (hwc.hasGlesComposition(mType)) { eglSwapBuffers(mDisplay, mSurface); success = eglSwapBuffers(mDisplay, mSurface); } } else { // HWC doesn't have the framebuffer target, we don't call // eglSwapBuffers(), since this is handled by HWComposer::commit(). } } // 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()); } void DisplayDevice::onSwapBuffersCompleted(HWComposer& hwc) const { Loading services/surfaceflinger/SurfaceFlinger.cpp +7 −4 Original line number Diff line number Diff line Loading @@ -927,10 +927,13 @@ void SurfaceFlinger::postFramebuffer() HWComposer& hwc(getHwComposer()); if (hwc.initCheck() == NO_ERROR) { // FIXME: EGL spec says: if (!hwc.supportsFramebufferTarget()) { // EGL spec says: // "surface must be bound to the calling thread's current context, // for the current rendering API." DisplayDevice::makeCurrent(mEGLDisplay, getDefaultDisplayDevice(), mEGLContext); DisplayDevice::makeCurrent(mEGLDisplay, getDefaultDisplayDevice(), mEGLContext); } hwc.commit(); } Loading Loading
services/surfaceflinger/DisplayDevice.cpp +10 −3 Original line number Diff line number Diff line Loading @@ -205,27 +205,34 @@ void DisplayDevice::flip(const Region& dirty) const } void DisplayDevice::swapBuffers(HWComposer& hwc) const { EGLBoolean success = EGL_TRUE; if (hwc.initCheck() != NO_ERROR) { // no HWC, we call eglSwapBuffers() eglSwapBuffers(mDisplay, mSurface); success = eglSwapBuffers(mDisplay, mSurface); } else { // We have a valid HWC, but not all displays can use it, in particular // the virtual displays are on their own. // TODO: HWC 1.2 will allow virtual displays if (mType >= DisplayDevice::DISPLAY_VIRTUAL) { // always call eglSwapBuffers() for virtual displays eglSwapBuffers(mDisplay, mSurface); success = eglSwapBuffers(mDisplay, mSurface); } else if (hwc.supportsFramebufferTarget()) { // as of hwc 1.1 we always call eglSwapBuffers if we have some // GLES layers if (hwc.hasGlesComposition(mType)) { eglSwapBuffers(mDisplay, mSurface); success = eglSwapBuffers(mDisplay, mSurface); } } else { // HWC doesn't have the framebuffer target, we don't call // eglSwapBuffers(), since this is handled by HWComposer::commit(). } } // 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()); } void DisplayDevice::onSwapBuffersCompleted(HWComposer& hwc) const { Loading
services/surfaceflinger/SurfaceFlinger.cpp +7 −4 Original line number Diff line number Diff line Loading @@ -927,10 +927,13 @@ void SurfaceFlinger::postFramebuffer() HWComposer& hwc(getHwComposer()); if (hwc.initCheck() == NO_ERROR) { // FIXME: EGL spec says: if (!hwc.supportsFramebufferTarget()) { // EGL spec says: // "surface must be bound to the calling thread's current context, // for the current rendering API." DisplayDevice::makeCurrent(mEGLDisplay, getDefaultDisplayDevice(), mEGLContext); DisplayDevice::makeCurrent(mEGLDisplay, getDefaultDisplayDevice(), mEGLContext); } hwc.commit(); } Loading