[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