summaryrefslogtreecommitdiff
path: root/libs/hwui/OpenGLRenderer.cpp
diff options
context:
space:
mode:
author Chris Craik <ccraik@google.com> 2014-09-18 16:05:35 -0700
committer Chris Craik <ccraik@google.com> 2014-09-18 16:05:35 -0700
commit284b24358410cb0200e525a5ba36994090c83f20 (patch)
tree6251ddc72a3e29f68a94159b89539acf90b30a5a /libs/hwui/OpenGLRenderer.cpp
parentc1e1550bf489b5fafff70154232c24bc5026b7df (diff)
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
Diffstat (limited to 'libs/hwui/OpenGLRenderer.cpp')
-rwxr-xr-xlibs/hwui/OpenGLRenderer.cpp7
1 files changed, 6 insertions, 1 deletions
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);