From 25d2f7bc1ff9b475eff75bfff647466e91dbacb2 Mon Sep 17 00:00:00 2001 From: John Reck Date: Tue, 10 Sep 2013 13:12:09 -0700 Subject: Fix scissor for functor invocation Bug: 10677765 enableScissor() must precede setScissorFromClip() as otherwise setScissorFromClip() doesn't do anything. Also make sure to call setScissorFromClip() if enableScissor() returns true as enableScissor() calls resetScissor() if the scissor state has changed. Change-Id: I9226b20bb256c92066aae344e4e6407540b6eae9 --- libs/hwui/OpenGLRenderer.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'libs/hwui/OpenGLRenderer.cpp') diff --git a/libs/hwui/OpenGLRenderer.cpp b/libs/hwui/OpenGLRenderer.cpp index 238d9a4955c6..2066f697dca8 100644 --- a/libs/hwui/OpenGLRenderer.cpp +++ b/libs/hwui/OpenGLRenderer.cpp @@ -471,12 +471,14 @@ status_t OpenGLRenderer::callDrawGLFunction(Functor* functor, Rect& dirty) { info.height = getSnapshot()->height; getSnapshot()->transform->copyTo(&info.transform[0]); + bool dirtyClip = mDirtyClip; // setup GL state for functor if (mDirtyClip) { - setScissorFromClip(); setStencilFromClip(); // can issue draws, so must precede enableScissor()/interrupt() } - mCaches.enableScissor(); + if (mCaches.enableScissor() || dirtyClip) { + setScissorFromClip(); + } interrupt(); // call functor immediately after GL state setup -- cgit v1.2.3-59-g8ed1b