diff options
author | Romain Guy <romainguy@google.com> | 2011-03-16 15:30:12 -0700 |
---|---|---|
committer | Romain Guy <romainguy@google.com> | 2011-03-16 15:31:33 -0700 |
commit | 80911b851764b073310fd0bffdf4a7db0d8fdd0b (patch) | |
tree | 854e09626693907162ed479408abd619e280ddc4 /libs | |
parent | fc59176241f498ad4eeb4237800c2eb5edd9efcd (diff) | |
download | frameworks_base-80911b851764b073310fd0bffdf4a7db0d8fdd0b.zip frameworks_base-80911b851764b073310fd0bffdf4a7db0d8fdd0b.tar.gz frameworks_base-80911b851764b073310fd0bffdf4a7db0d8fdd0b.tar.bz2 |
Modify the GL renderer's functor to pass the clip to WebView
Change-Id: If5efe399ca58f3000b2883e24e9f3736a2025184
Diffstat (limited to 'libs')
-rw-r--r-- | libs/hwui/OpenGLRenderer.cpp | 30 |
1 files changed, 25 insertions, 5 deletions
diff --git a/libs/hwui/OpenGLRenderer.cpp b/libs/hwui/OpenGLRenderer.cpp index e01e072..d265804 100644 --- a/libs/hwui/OpenGLRenderer.cpp +++ b/libs/hwui/OpenGLRenderer.cpp @@ -216,21 +216,41 @@ bool OpenGLRenderer::callDrawGLFunction(Functor *functor, Rect& dirty) { setScissorFromClip(); } + Rect clip(*mSnapshot->clipRect); + clip.snapToPixelBoundaries(); + #if RENDER_LAYERS_AS_REGIONS // Since we don't know what the functor will draw, let's dirty // tne entire clip region if (hasLayer()) { - Rect clip(*mSnapshot->clipRect); - clip.snapToPixelBoundaries(); dirtyLayerUnchecked(clip, getRegion()); } #endif - float bounds[4]; - status_t result = (*functor)(&bounds[0], 4); + struct { + // Input: current clip rect + int clipLeft; + int clipTop; + int clipRight; + int clipBottom; + + // Output: dirty region to redraw + float dirtyLeft; + float dirtyTop; + float dirtyRight; + float dirtyBottom; + } constraints; + + constraints.clipLeft = clip.left; + constraints.clipTop = clip.top; + constraints.clipRight = clip.right; + constraints.clipBottom = clip.bottom; + + status_t result = (*functor)(0, &constraints); if (result != 0) { - Rect localDirty(bounds[0], bounds[1], bounds[2], bounds[3]); + Rect localDirty(constraints.dirtyLeft, constraints.dirtyTop, + constraints.dirtyRight, constraints.dirtyBottom); dirty.unionWith(localDirty); } |