summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTreehugger Robot <treehugger-gerrit@google.com>2020-05-04 08:37:32 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2020-05-04 08:37:32 +0000
commitc5ddb5d97b7f462e5b2167439e1a18fa494ae32f (patch)
treed7b133856080745f46bef7aa6716d0720e4cfc19
parentbbb3a1500793d874851872852a2c2f8c6a4ac284 (diff)
parentf73a4a7ef8cdc51c29f3683b93eb9fada46c9762 (diff)
downloadnative-pie-gsi.tar.gz
Merge "sf: Fix issue with makeCurrent when multiple display present" into pie-gsipie-gsi
-rw-r--r--services/surfaceflinger/SurfaceFlinger.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp
index d0207f9e5b..9c02886885 100644
--- a/services/surfaceflinger/SurfaceFlinger.cpp
+++ b/services/surfaceflinger/SurfaceFlinger.cpp
@@ -3011,6 +3011,7 @@ bool SurfaceFlinger::doComposeSurfaces(const sp<const DisplayDevice>& displayDev
const DisplayRenderArea renderArea(displayDevice);
const auto hwcId = displayDevice->getHwcDisplayId();
const bool hasClientComposition = getBE().mHwc->hasClientComposition(hwcId);
+ const bool hasFlipClientTargetReq = getBE().mHwc->hasFlipClientTargetRequest(hwcId);
ATRACE_INT("hasClientComposition", hasClientComposition);
bool applyColorMatrix = false;
@@ -3097,6 +3098,18 @@ bool SurfaceFlinger::doComposeSurfaces(const sp<const DisplayDevice>& displayDev
getBE().mRenderEngine->setScissor(scissor.left, height - scissor.bottom,
scissor.getWidth(), scissor.getHeight());
}
+ } else if (hasFlipClientTargetReq) {
+ if (!displayDevice->makeCurrent()) {
+ ALOGW("DisplayDevice::makeCurrent failed. Aborting surface composition for display %s",
+ displayDevice->getDisplayName().string());
+ getRenderEngine().resetCurrentSurface();
+
+ // |mStateLock| not needed as we are on the main thread
+ if(!getDefaultDisplayDeviceLocked()->makeCurrent()) {
+ ALOGE("DisplayDevice::makeCurrent on default display failed. Aborting.");
+ }
+ return false;
+ }
}
/*