From 284b24358410cb0200e525a5ba36994090c83f20 Mon Sep 17 00:00:00 2001 From: Chris Craik Date: Thu, 18 Sep 2014 16:05:35 -0700 Subject: Fix garbage showing up beneath dialogs bug:17463894 Fixes the setViewport method to immediately affect the return values of getViewportWidth/Height methods. Also works around tiling extension issues observed on first frame after window resize by disabling tiling for that frame. Change-Id: Ie172d572d20d74a1be9cc58ad389af2cffa0e4b6 --- libs/hwui/OpenGLRenderer.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'libs/hwui/OpenGLRenderer.cpp') diff --git a/libs/hwui/OpenGLRenderer.cpp b/libs/hwui/OpenGLRenderer.cpp index 25ea72915057..ce1d09fe149a 100755 --- a/libs/hwui/OpenGLRenderer.cpp +++ b/libs/hwui/OpenGLRenderer.cpp @@ -134,6 +134,8 @@ OpenGLRenderer::OpenGLRenderer(RenderState& renderState) , mExtensions(Extensions::getInstance()) , mRenderState(renderState) , mScissorOptimizationDisabled(false) + , mSuppressTiling(false) + , mFirstFrameAfterResize(true) , mCountOverdraw(false) , mLightCenter((Vector3){FLT_MIN, FLT_MIN, FLT_MIN}) , mLightRadius(FLT_MIN) @@ -179,6 +181,7 @@ void OpenGLRenderer::onViewportInitialized() { glClearColor(0.0f, 0.0f, 0.0f, 0.0f); glEnableVertexAttribArray(Program::kBindingPosition); + mFirstFrameAfterResize = true; } void OpenGLRenderer::setupFrameState(float left, float top, @@ -202,7 +205,9 @@ status_t OpenGLRenderer::startFrame() { // Functors break the tiling extension in pretty spectacular ways // This ensures we don't use tiling when a functor is going to be // invoked during the frame - mSuppressTiling = mCaches.hasRegisteredFunctors(); + mSuppressTiling = mCaches.hasRegisteredFunctors() + || mFirstFrameAfterResize; + mFirstFrameAfterResize = false; startTilingCurrentClip(true); -- cgit v1.2.3-59-g8ed1b