summaryrefslogtreecommitdiffstats
path: root/libs/hwui
diff options
context:
space:
mode:
authorRomain Guy <romainguy@android.com>2010-10-22 10:40:27 -0700
committerRomain Guy <romainguy@android.com>2010-10-22 10:40:27 -0700
commitae517591d96be39f5f18a1716c856ade13a8bcc7 (patch)
tree05fbd13d7ea9d793455da764d6852e12429dd8dd /libs/hwui
parent477d9b2ddc9515e0df088c448ddfb6f9145edce1 (diff)
downloadframeworks_base-ae517591d96be39f5f18a1716c856ade13a8bcc7.zip
frameworks_base-ae517591d96be39f5f18a1716c856ade13a8bcc7.tar.gz
frameworks_base-ae517591d96be39f5f18a1716c856ade13a8bcc7.tar.bz2
Don't perform glCopyTextImage with coordinates outside the buffer.
Bug #3122179 Change-Id: I91ed397e9e553a8eeb69d82d0c5b1e49a3cdd5ff
Diffstat (limited to 'libs/hwui')
-rw-r--r--libs/hwui/OpenGLRenderer.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/libs/hwui/OpenGLRenderer.cpp b/libs/hwui/OpenGLRenderer.cpp
index 17ef598..38e153f 100644
--- a/libs/hwui/OpenGLRenderer.cpp
+++ b/libs/hwui/OpenGLRenderer.cpp
@@ -355,8 +355,16 @@ bool OpenGLRenderer::createLayer(sp<Snapshot> snapshot, float left, float top,
Rect bounds(left, top, right, bottom);
if (!fboLayer) {
mSnapshot->transform->mapRect(bounds);
+
// Layers only make sense if they are in the framebuffer's bounds
bounds.intersect(*mSnapshot->clipRect);
+
+ // When the layer is not an FBO, we may use glCopyTexImage so we
+ // need to make sure the layer does not extend outside the bounds
+ // of the framebuffer
+ bounds.intersect(snapshot->previous->viewport);
+
+ // We cannot work with sub-pixels in this case
bounds.snapToPixelBoundaries();
}