diff options
author | John Reck <jreck@google.com> | 2013-09-10 13:12:09 -0700 |
---|---|---|
committer | John Reck <jreck@google.com> | 2013-09-10 20:45:29 +0000 |
commit | 25d2f7bc1ff9b475eff75bfff647466e91dbacb2 (patch) | |
tree | 2a4dc136adae063c2018ce35bd3e8f9944a15d92 | |
parent | b776122a8aa9fd082fa8aaa216c8a589d709c4c9 (diff) | |
download | frameworks_base-25d2f7bc1ff9b475eff75bfff647466e91dbacb2.zip frameworks_base-25d2f7bc1ff9b475eff75bfff647466e91dbacb2.tar.gz frameworks_base-25d2f7bc1ff9b475eff75bfff647466e91dbacb2.tar.bz2 |
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
-rw-r--r-- | libs/hwui/OpenGLRenderer.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/libs/hwui/OpenGLRenderer.cpp b/libs/hwui/OpenGLRenderer.cpp index 238d9a4..2066f69 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 |