diff options
Diffstat (limited to 'gfx/cairo/fix-xcopyarea-with-clips.patch')
-rw-r--r-- | gfx/cairo/fix-xcopyarea-with-clips.patch | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/gfx/cairo/fix-xcopyarea-with-clips.patch b/gfx/cairo/fix-xcopyarea-with-clips.patch new file mode 100644 index 0000000000..6bf3320b62 --- /dev/null +++ b/gfx/cairo/fix-xcopyarea-with-clips.patch @@ -0,0 +1,38 @@ +From: Benjamin Otte <otte@redhat.com> +Date: Thu, 29 Apr 2010 16:20:59 +0000 +Subject: xlib: Don't modify variables that are needed later + +In the XCopyArea region code, don't modify src_x/y when they are later +used in the unbounded fixup code. + +Exposed by composite-integer-translate-source test. +--- +diff --git a/src/cairo-xlib-surface.c b/src/cairo-xlib-surface.c +index bedc3fd..30c08d3 100644 +--- a/gfx/cairo/cairo/src/cairo-xlib-surface.c ++++ b/gfx/cairo/cairo/src/cairo-xlib-surface.c +@@ -2322,10 +2322,10 @@ _cairo_xlib_surface_composite (cairo_operator_t op, + width, height, + dst_x, dst_y); + } else { +- int n, num_rects; ++ int n, num_rects, x, y; + +- src_x += src_attr.x_offset + itx - dst_x; +- src_y += src_attr.y_offset + ity - dst_y; ++ x = src_x + src_attr.x_offset + itx - dst_x; ++ y = src_y + src_attr.y_offset + ity - dst_y; + + num_rects = cairo_region_num_rectangles (clip_region); + for (n = 0; n < num_rects; n++) { +@@ -2333,7 +2333,7 @@ _cairo_xlib_surface_composite (cairo_operator_t op, + + cairo_region_get_rectangle (clip_region, n, &rect); + XCopyArea (dst->dpy, src->drawable, dst->drawable, gc, +- rect.x + src_x, rect.y + src_y, ++ rect.x + x, rect.y + y, + rect.width, rect.height, + rect.x, rect.y); + } +-- +cgit v0.8.3-6-g21f6 |