[cairo-commit] Branch '1.10' - src/cairo-image-surface.c

Uli Schlachter psychon at kemper.freedesktop.org
Sat Apr 2 02:24:45 PDT 2011


 src/cairo-image-surface.c |    5 +++++
 1 file changed, 5 insertions(+)

New commits:
commit cd07704183a3b907b389f553f046920dea547890
Author: Uli Schlachter <psychon at znc.in>
Date:   Mon Mar 21 18:46:32 2011 +0100

    image: Don't use the fast path if it's wrong
    
    Fixes the original report from:
    http://lists.cairographics.org/archives/cairo/2011-March/021827.html
    
    I tested this code path with all operators and "source" is the only one which
    causes issues with rendering outside of the boxes.
    
    Possibly fixes: https://bugs.freedesktop.org/show_bug.cgi?id=35407
    
    Signed-off-by: Uli Schlachter <psychon at znc.in>

diff --git a/src/cairo-image-surface.c b/src/cairo-image-surface.c
index fcc832e..7c56f16 100644
--- a/src/cairo-image-surface.c
+++ b/src/cairo-image-surface.c
@@ -2828,6 +2828,11 @@ _composite_unaligned_boxes (cairo_image_surface_t *dst,
     const struct _cairo_boxes_chunk *chunk;
     int i, src_x, src_y;
 
+    /* The below code breaks for operator source. This can best be seen with
+     * multiple boxes where black is drawn to dst outside of the boxes. */
+    if (op == CAIRO_OPERATOR_SOURCE)
+	return CAIRO_INT_STATUS_UNSUPPORTED;
+
     i = CAIRO_STRIDE_FOR_WIDTH_BPP (extents->bounded.width, 8) * extents->bounded.height;
     if ((unsigned) i <= sizeof (buf)) {
 	mask = pixman_image_create_bits (PIXMAN_a8,


More information about the cairo-commit mailing list