From d0afeac6dfc0856eeb72e6176ad6335e81871d24 Mon Sep 17 00:00:00 2001 From: Chris Craik Date: Fri, 15 Mar 2013 18:43:11 -0700 Subject: Reset draw modifiers after flushing bug:8401910 This avoids leaving the renderer in a state with stale pointers (to, e.g., shaders or color filters) Change-Id: Idf8b63657041352e70e34e91ea416fe4385d4bc2 --- libs/hwui/OpenGLRenderer.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'libs/hwui/OpenGLRenderer.cpp') diff --git a/libs/hwui/OpenGLRenderer.cpp b/libs/hwui/OpenGLRenderer.cpp index 428980e485f1..e576f76f8660 100644 --- a/libs/hwui/OpenGLRenderer.cpp +++ b/libs/hwui/OpenGLRenderer.cpp @@ -112,10 +112,7 @@ static const Blender gBlendsSwap[] = { OpenGLRenderer::OpenGLRenderer(): mCaches(Caches::getInstance()), mExtensions(Extensions::getInstance()) { - mDrawModifiers.mShader = NULL; - mDrawModifiers.mColorFilter = NULL; - mDrawModifiers.mHasShadow = false; - mDrawModifiers.mHasDrawFilter = false; + resetDrawModifiers(); memcpy(mMeshVertices, gMeshVertices, sizeof(gMeshVertices)); @@ -1204,6 +1201,13 @@ void OpenGLRenderer::clearLayerRegions() { // State Deferral /////////////////////////////////////////////////////////////////////////////// +void OpenGLRenderer::resetDrawModifiers() { + mDrawModifiers.mShader = NULL; + mDrawModifiers.mColorFilter = NULL; + mDrawModifiers.mHasShadow = false; + mDrawModifiers.mHasDrawFilter = false; +} + bool OpenGLRenderer::storeDisplayState(DeferredDisplayState& state, int stateDeferFlags) { const Rect& currentClip = *(mSnapshot->clipRect); const mat4& currentMatrix = *(mSnapshot->transform); -- cgit v1.2.3-59-g8ed1b