summaryrefslogtreecommitdiffstats
path: root/gfx/cairo/fix-xcopyarea-with-clips.patch
blob: 6bf3320b628e92c436e15908a06238b2ec560faa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
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