gfx/cairo/fix-xcopyarea-with-clips.patch

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/gfx/cairo/fix-xcopyarea-with-clips.patch	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,38 @@
     1.4 +From: Benjamin Otte <otte@redhat.com>
     1.5 +Date: Thu, 29 Apr 2010 16:20:59 +0000
     1.6 +Subject: xlib: Don't modify variables that are needed later
     1.7 +
     1.8 +In the XCopyArea region code, don't modify src_x/y when they are later
     1.9 +used in the unbounded fixup code.
    1.10 +
    1.11 +Exposed by composite-integer-translate-source test.
    1.12 +---
    1.13 +diff --git a/src/cairo-xlib-surface.c b/src/cairo-xlib-surface.c
    1.14 +index bedc3fd..30c08d3 100644
    1.15 +--- a/gfx/cairo/cairo/src/cairo-xlib-surface.c
    1.16 ++++ b/gfx/cairo/cairo/src/cairo-xlib-surface.c
    1.17 +@@ -2322,10 +2322,10 @@ _cairo_xlib_surface_composite (cairo_operator_t		op,
    1.18 + 		       width, height,
    1.19 + 		       dst_x, dst_y);
    1.20 + 	} else {
    1.21 +-	    int n, num_rects;
    1.22 ++	    int n, num_rects, x, y;
    1.23 + 
    1.24 +-	    src_x += src_attr.x_offset + itx - dst_x;
    1.25 +-	    src_y += src_attr.y_offset + ity - dst_y;
    1.26 ++	    x = src_x + src_attr.x_offset + itx - dst_x;
    1.27 ++	    y = src_y + src_attr.y_offset + ity - dst_y;
    1.28 + 
    1.29 + 	    num_rects = cairo_region_num_rectangles (clip_region);
    1.30 + 	    for (n = 0; n < num_rects; n++) {
    1.31 +@@ -2333,7 +2333,7 @@ _cairo_xlib_surface_composite (cairo_operator_t		op,
    1.32 + 
    1.33 + 		cairo_region_get_rectangle (clip_region, n, &rect);
    1.34 + 		XCopyArea (dst->dpy, src->drawable, dst->drawable, gc,
    1.35 +-			   rect.x + src_x, rect.y + src_y,
    1.36 ++			   rect.x + x, rect.y + y,
    1.37 + 			   rect.width, rect.height,
    1.38 + 			   rect.x, rect.y);
    1.39 + 	    }
    1.40 +--
    1.41 +cgit v0.8.3-6-g21f6

mercurial