[cairo] [PATCH] cairo-xcb: Remove a wrong optimisation

darxus at chaosreigns.com darxus at chaosreigns.com
Mon Jul 18 17:36:02 UTC 2016


What needs to happen for this to get committed?

On 07/17, Uli Schlachter wrote:
> 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>
> ---
>  src/cairo-xcb-surface-render.c | 2 --
>  1 file changed, 2 deletions(-)
> 
> 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,
> -- 
> 2.8.1
> 


More information about the cairo mailing list