summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn Reck <jreck@google.com>2013-09-10 13:12:09 -0700
committerJohn Reck <jreck@google.com>2013-09-10 20:45:29 +0000
commit25d2f7bc1ff9b475eff75bfff647466e91dbacb2 (patch)
tree2a4dc136adae063c2018ce35bd3e8f9944a15d92
parentb776122a8aa9fd082fa8aaa216c8a589d709c4c9 (diff)
downloadframeworks_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.cpp6
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