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_pattern_t		*src_pattern, cairo_pattern_t		*mask_pattern, 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_xcb_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_xcb_surface_t *dst = abstract_dst;    cairo_xcb_surface_t *src = (cairo_xcb_surface_t *) generic_src;    cairo_xcb_surface_t *mask = (cairo_xcb_surface_t *) generic_mask;    cairo_xcb_surface_t *src_clone = NULL;    cairo_xcb_surface_t *mask_clone = NULL;    XCBRenderPICTURE maskpict = { 0 };        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_xcb_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_xcb_surface_clone_similar (generic_mask, dst,							CAIRO_FORMAT_A8, 8);	if (!mask_clone)	    return CAIRO_INT_STATUS_UNSUPPORTED;	mask = mask_clone;    }    if(mask)	maskpict = mask->picture;    XCBRenderComposite (dst->dpy,		      _render_operator (operator),		      src->picture,		      maskpict,		      dst->picture,		      src_x, src_y,		      mask_x, mask_y,		      dst_x, dst_y,		      width, height);    /* XXX: This is messed up. If I can xcb_surface_create, then I       should be able to xcb_surface_destroy. */    if (src_clone)	cairo_surface_destroy (&src_clone->base);    if (mask_clone)	cairo_surface_destroy (&mask_clone->base);    return CAIRO_STATUS_SUCCESS;}