[prev in list] [next in list] [prev in thread] [next in thread] 

List:       cairo-commit
Subject:    [cairo-commit] Branch '1.10' - src/cairo-image-surface.c
From:       psychon () kemper ! freedesktop ! org (Uli Schlachter)
Date:       2011-04-02 9:24:45
Message-ID: 20110402092445.863E2F81E7 () kemper ! freedesktop ! org
[Download RAW message or body]

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

New commits:
commit cd07704183a3b907b389f553f046920dea547890
Author: Uli Schlachter <psychon@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@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,
_______________________________________________
cairo-commit mailing list
cairo-commit@lists.cairographics.org
http://lists.cairographics.org/mailman/listinfo/cairo-commit
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic