From ea4945850ae3ce3614bcadc0fa413eb836344430 Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Fri, 16 Mar 2007 20:04:26 +0000 Subject: [PATCH] Avoid using substituted surfaces for xlib operations. Detect when a substitute image surface is returned for a solid pattern, and avoid mixed image/xlib composite operations. This can happen for example if there is a resource allocation failure during creating a similar surface. --- src/cairo-xlib-surface.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/cairo-xlib-surface.c b/src/cairo-xlib-surface.c index ff5cdfe8a..5914c37cf 100644 --- a/src/cairo-xlib-surface.c +++ b/src/cairo-xlib-surface.c @@ -1217,7 +1217,12 @@ _recategorize_composite_operation (cairo_xlib_surface_t *dst, { cairo_bool_t is_integer_translation = _cairo_matrix_is_integer_translation (&src_attr->matrix, NULL, NULL); - cairo_bool_t needs_alpha_composite = + cairo_bool_t needs_alpha_composite; + + if (!_cairo_surface_is_xlib (&src->base)) + return DO_UNSUPPORTED; + + needs_alpha_composite = _operator_needs_alpha_composite (op, _surface_has_alpha (src)); if (!have_mask &&