if (operator == CAIRO_OPERATOR_SRC && !mask && _cairo_matrix_is_integer_translation(&(src->base.matrix), &src_x_off, &src_y_off) && _cairo_matrix_is_integer_translation(&(dst->base.matrix), &dst_x_off, &dst_y_off)) {  _cairo_xlib_surface_ensure_gc (dst); XGetGCValues(dst->dpy, dst->gc, GCGraphicsExposures, &gc_values); XSetGraphicsExposures(dst->dpy, dst->gc, False); XCopyArea(dst->dpy, src->drawable, dst->drawable, dst->gc, src_x + src_x_off, src_y + src_y_off, width, height, dst_x + dst_x_off, dst_y + dst_y_off); XSetGraphicsExposures(dst->dpy, dst->gc, gc_values.graphics_exposures);
if (mask) _cairo_pattern_release_surface (&dst->base, &mask->base, &mask_attr);  _cairo_pattern_release_surface (&dst->base, &src->base, &src_attr);
_cairo_xlib_surface_composite (cairo_operator_t		operator,			       cairo_surface_t		*generic_src,			       cairo_surface_t		*generic_mask,			       void			*abstract_dst,			       int			src_x,			       int			src_y,			       int			mask_x,			       int			mask_y,			       int			dst_x,			       int			dst_y,			       unsigned int		width,			       unsigned int		height){    cairo_xlib_surface_t *dst = abstract_dst;    cairo_xlib_surface_t *src = (cairo_xlib_surface_t *) generic_src;    cairo_xlib_surface_t *mask = (cairo_xlib_surface_t *) generic_mask;    cairo_xlib_surface_t *src_clone = NULL;    cairo_xlib_surface_t *mask_clone = NULL;    XGCValues gc_values;    int src_x_off, src_y_off, dst_x_off, dst_y_off;    if (!CAIRO_SURFACE_RENDER_HAS_COMPOSITE (dst))	return CAIRO_INT_STATUS_UNSUPPORTED;    if (generic_src->backend != dst->base.backend || src->dpy != dst->dpy) {	src_clone = _cairo_xlib_surface_clone_similar (generic_src, dst,						       CAIRO_FORMAT_ARGB32, 32);	if (!src_clone)	    return CAIRO_INT_STATUS_UNSUPPORTED;	src = src_clone;    }    if (generic_mask && (generic_mask->backend != dst->base.backend || mask->dpy != dst->dpy)) {	mask_clone = _cairo_xlib_surface_clone_similar (generic_mask, dst,							CAIRO_FORMAT_A8, 8);	if (!mask_clone)	    return CAIRO_INT_STATUS_UNSUPPORTED;	mask = mask_clone;    }    if (operator == CAIRO_OPERATOR_SRC 	&& !mask	&& _cairo_matrix_is_integer_translation(&(src->base.matrix), 						&src_x_off, &src_y_off)	&& _cairo_matrix_is_integer_translation(&(dst->base.matrix), 						&dst_x_off, &dst_y_off)) {	/* Fast path for copying "raw" areas. */ 	_cairo_xlib_surface_ensure_gc (dst); 	XGetGCValues(dst->dpy, dst->gc, GCGraphicsExposures, &gc_values);	XSetGraphicsExposures(dst->dpy, dst->gc, False);	XCopyArea(dst->dpy, 		  src->drawable, 		  dst->drawable, 		  dst->gc, 		  src_x + src_x_off, 		  src_y + src_y_off, 		  width, height, 		  dst_x + dst_x_off, 		  dst_y + dst_y_off);	XSetGraphicsExposures(dst->dpy, dst->gc, gc_values.graphics_exposures);    } else {	    XRenderComposite (dst->dpy,		      _render_operator (operator),		      src->picture,		      mask ? mask->picture : 0,		      dst->picture,		      src_x, src_y,		      mask_x, mask_y,		      dst_x, dst_y,		      width, height);    }    /* XXX: This is messed up. If I can xlib_surface_create, then I       should be able to xlib_surface_destroy. */    if (src_clone)	cairo_surface_destroy (&src_clone->base);    if (mask_clone)	cairo_surface_destroy (&mask_clone->base);    return CAIRO_STATUS_SUCCESS;}