src_image = _cairo_surface_get_image (src); if (mask) mask_image = _cairo_surface_get_image (mask); dst_image = _cairo_surface_get_image (dst);  dst_image->base.backend->composite (operator, &src_image->base, mask ? &mask_image->base : NULL, dst_image, src_x, src_y, mask_x, mask_y, dst_x, dst_y, width, height);  status = _cairo_surface_set_image (dst, dst_image);  cairo_surface_destroy (&src_image->base); if (mask) cairo_surface_destroy (&mask_image->base); cairo_surface_destroy (&dst_image->base);  return status;
return _fallback_composite (operator, src, mask, dst, src_x, src_y, mask_x, mask_y, dst_x, dst_y, width, height);
_cairo_surface_composite (cairo_operator_t	operator,			  cairo_surface_t	*src,			  cairo_surface_t	*mask,			  cairo_surface_t	*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_int_status_t status;    cairo_image_surface_t *src_image, *mask_image = 0, *dst_image;    status = dst->backend->composite (operator,				      src, mask, dst,				      src_x, src_y,				      mask_x, mask_y,				      dst_x, dst_y,				      width, height);    if (status != CAIRO_INT_STATUS_UNSUPPORTED)	return status;    src_image = _cairo_surface_get_image (src);    if (mask)	mask_image = _cairo_surface_get_image (mask);    dst_image = _cairo_surface_get_image (dst);    dst_image->base.backend->composite (operator,					&src_image->base,					mask ? &mask_image->base : NULL,					dst_image,					src_x, src_y,					mask_x, mask_y,					dst_x, dst_y,					width, height);    status = _cairo_surface_set_image (dst, dst_image);    cairo_surface_destroy (&src_image->base);    if (mask)	cairo_surface_destroy (&mask_image->base);    cairo_surface_destroy (&dst_image->base);    return status;}