summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Stoza <stoza@google.com>2018-05-31 15:28:00 -0700
committerDan Stoza <stoza@google.com>2018-05-31 15:28:00 -0700
commita277ccba0781c07b73afda203fcaabd46104b49d (patch)
tree8682fc31109d5c4f37a619ac0f75a6d622141bed
parent63a2d825b866c6a0d9201222a6ba54b352937ecf (diff)
downloadnative-a277ccba0781c07b73afda203fcaabd46104b49d.tar.gz
SF: Add workaround to release screenshot buffer
Works around driver behavior to force the [E]GL driver to fully release the screenshot buffer immediately after the screenshot is complete rather than deferring until the next instance of client composition. Bug: b/77935566 Test: Manual, inspect 'dumpsys SurfaceFlinger' after launching an app and then returning home (which causes a screenshot for overview) Change-Id: I4f33d89f3ff3020707a9f556a1fcfe34bc9b7adb
-rw-r--r--services/surfaceflinger/RenderEngine/RenderEngine.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/services/surfaceflinger/RenderEngine/RenderEngine.cpp b/services/surfaceflinger/RenderEngine/RenderEngine.cpp
index 4c878aee31..c2233f9b59 100644
--- a/services/surfaceflinger/RenderEngine/RenderEngine.cpp
+++ b/services/surfaceflinger/RenderEngine/RenderEngine.cpp
@@ -427,6 +427,12 @@ void RenderEngine::unbindNativeBufferAsFrameBuffer(RE::BindNativeBufferAsFramebu
// back to main framebuffer
unbindFramebuffer(bindHelper->mTexName, bindHelper->mFbName);
eglDestroyImageKHR(mEGLDisplay, bindHelper->mImage);
+
+ // Workaround for b/77935566 to force the EGL driver to release the
+ // screenshot buffer
+ setScissor(0, 0, 0, 0);
+ clearWithColor(0.0, 0.0, 0.0, 0.0);
+ disableScissor();
}
// ---------------------------------------------------------------------------