Clip rectangles are not necessarily YSorted

None of the cairo clipping computations guarantee that the resulting
list of rectangles are constructed in any particular order. Promising
that they are results in an X error (BadMatch) which generally causes
applications to crash.

I suspect this may well be implicated in many (many) bug reports about
applications which use cairo.

Signed-off-by: Keith Packard <keithp@keithp.com>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
This commit is contained in:
Keith Packard 2011-12-06 09:58:18 -08:00 committed by Chris Wilson
parent d60a2930e1
commit 950021f881

View file

@ -217,7 +217,7 @@ copy_boxes (void *_dst,
}
assert (j == boxes->num_boxes);
XSetClipRectangles (dst->dpy, gc, 0, 0, rects, j, YSorted);
XSetClipRectangles (dst->dpy, gc, 0, 0, rects, j, Unsorted);
XCopyArea (dst->dpy, src->drawable, dst->drawable, gc,
extents->x + dx, extents->y + dy,