From 22ee2f4d2b7935a18a1d97bb8b8b058e7d41ad28 Mon Sep 17 00:00:00 2001 From: Season Li Date: Thu, 4 Aug 2016 14:32:44 -0700 Subject: SF: Call makeCurrent after presenting each display HWC can change EGLContext in each present. Restore to default EGLContext after commiting each display. Test: see https://android-review.googlesource.com/#/c/372703/ Change-Id: I4abc84fb3d4b74964fabcad5a2568ff01a6c5dbb --- services/surfaceflinger/SurfaceFlinger.cpp | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp index deeb45649d..617aec37c8 100644 --- a/services/surfaceflinger/SurfaceFlinger.cpp +++ b/services/surfaceflinger/SurfaceFlinger.cpp @@ -1405,13 +1405,7 @@ void SurfaceFlinger::postFramebuffer() mHwc->commit(hwcId); } displayDevice->onSwapBuffersCompleted(); - if (displayId == 0) { - // Make the default display current because the VirtualDisplayDevice - // code cannot deal with dequeueBuffer() being called outside of the - // composition loop; however the code below can call glFlush() which - // is allowed to (and does in some case) call dequeueBuffer(). - displayDevice->makeCurrent(mEGLDisplay, mEGLContext); - } + displayDevice->makeCurrent(mEGLDisplay, mEGLContext); for (auto& layer : displayDevice->getVisibleLayersSortedByZ()) { sp releaseFence = Fence::NO_FENCE; if (layer->getCompositionType(hwcId) == HWC2::Composition::Client) { -- cgit v1.2.3-59-g8ed1b