From c5f74999ce4d00cd5a30591e924736b0a9986ddd Mon Sep 17 00:00:00 2001 From: Kartikaya Gupta Date: Thu, 26 Apr 2012 14:23:28 -0400 Subject: [PATCH] Bug 749164 - Fix viewport intersection with page rect and guard against zero screen area. r=jrmuizel --- mobile/android/base/gfx/LayerRenderer.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/mobile/android/base/gfx/LayerRenderer.java b/mobile/android/base/gfx/LayerRenderer.java index 6a11e09e5b1..803085ff014 100644 --- a/mobile/android/base/gfx/LayerRenderer.java +++ b/mobile/android/base/gfx/LayerRenderer.java @@ -674,7 +674,7 @@ public class LayerRenderer implements GLSurfaceView.Renderer { /* restrict the viewport to page bounds so we don't * count overscroll as checkerboard */ - if (!viewport.intersect(mPageRect)) { + if (!viewport.intersect(0, 0, mPageRect.width(), mPageRect.height())) { /* if the rectangles don't intersect intersect() doesn't change viewport so we set it to empty by hand */ @@ -683,8 +683,9 @@ public class LayerRenderer implements GLSurfaceView.Renderer { validRegion.op(viewport, Region.Op.INTERSECT); float checkerboard = 0.0f; - if (!(validRegion.isRect() && validRegion.getBounds().equals(viewport))) { - int screenArea = viewport.width() * viewport.height(); + + int screenArea = viewport.width() * viewport.height(); + if (screenArea > 0 && !(validRegion.isRect() && validRegion.getBounds().equals(viewport))) { validRegion.op(viewport, Region.Op.REVERSE_DIFFERENCE); // XXX The assumption here is that a Region never has overlapping