gfx/cairo/fixup-unbounded.patch
author Jeff Muizelaar <jmuizelaar@mozilla.com>
Fri, 19 Aug 2011 11:26:23 -0400
changeset 76617 427f162c761c195d919f3a593c82bea0e4851ccf
permissions -rw-r--r--
Bug 668921. cairo: Fix fixup_unbounded_boxes() to work even if the box is smaller than the extents. r=ickle Currently fixup_unbounded_boxes assumes that the extents are tight when we only have one box. This is not always true. e.g. when we tesselate boxes we can end up with only one box which is smaller than the extents and the extents are not updated.

diff --git a/gfx/cairo/cairo/src/cairo-image-surface.c b/gfx/cairo/cairo/src/cairo-image-surface.c
--- a/gfx/cairo/cairo/src/cairo-image-surface.c
+++ b/gfx/cairo/cairo/src/cairo-image-surface.c
@@ -1797,17 +1797,17 @@ _cairo_image_surface_fixup_unbounded_box
 					    cairo_boxes_t *boxes)
 {
     cairo_boxes_t clear;
     cairo_box_t box;
     cairo_status_t status;
     struct _cairo_boxes_chunk *chunk;
     int i;
 
-    if (boxes->num_boxes <= 1 && clip_region == NULL)
+    if (boxes->num_boxes < 1 && clip_region == NULL)
 	return _cairo_image_surface_fixup_unbounded (dst, extents, NULL);
 
     _cairo_boxes_init (&clear);
 
     box.p1.x = _cairo_fixed_from_int (extents->unbounded.x + extents->unbounded.width);
     box.p1.y = _cairo_fixed_from_int (extents->unbounded.y);
     box.p2.x = _cairo_fixed_from_int (extents->unbounded.x);
     box.p2.y = _cairo_fixed_from_int (extents->unbounded.y + extents->unbounded.height);