[cairo-commit] src/cairo-xcb-surface-render.c

Uli Schlachter psychon at kemper.freedesktop.org
Thu Jul 21 16:59:18 UTC 2016


 src/cairo-xcb-surface-render.c |    2 --
 1 file changed, 2 deletions(-)

New commits:
commit 3f8241f48488d3da4afce6646e043ee70cf1cfd2
Author: Uli Schlachter <psychon at znc.in>
Date:   Sun Jul 17 15:08:51 2016 +0200

    cairo-xcb: Remove a wrong optimisation
    
    When doing a "complicated" mask operation, we draw the clip to a surface and use
    this as a mask in later operations. The code assumes that this operation draws
    to the whole target surface and thus a deferred clear may be skipped.
    
    However, this requires that the extents of the trapezoids that will be drawn and
    the extents of the surface are the same. This assumption is wrong, as can be
    seen e.g. by the bug report that this commit fixes.
    
    The fix is just not to skip the deferred clear.
    
    Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=84330
    Signed-off-by: Uli Schlachter <psychon at znc.in>

diff --git a/src/cairo-xcb-surface-render.c b/src/cairo-xcb-surface-render.c
index 64a3d5a..a4969c9 100644
--- a/src/cairo-xcb-surface-render.c
+++ b/src/cairo-xcb-surface-render.c
@@ -3400,8 +3400,6 @@ _composite_mask_clip (void				*closure,
 	}
     }
 
-    dst->deferred_clear = FALSE; /* assert(trap extents == extents); */
-
     status = _composite_traps (&info,
 			       dst, CAIRO_OPERATOR_SOURCE, mask_pattern,
 			       dst_x, dst_y,


More information about the cairo-commit mailing list