summaryrefslogtreecommitdiff
path: root/src/cairo-xlib-surface.c
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2012-02-09 13:01:17 +0000
committerChris Wilson <chris@chris-wilson.co.uk>2012-02-09 13:01:17 +0000
commit2061cd81f26c04deb5a7092744295caab7bac077 (patch)
tree9190b32541c48e1440f6581c34f3253092597984 /src/cairo-xlib-surface.c
parent7c34997a3ba89f2e957953aeb4bffa910dbf375b (diff)
downloadcairo-2061cd81f26c04deb5a7092744295caab7bac077.tar.gz
Replace the ad-hoc surface unwrappers with a function pointer
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Diffstat (limited to 'src/cairo-xlib-surface.c')
-rw-r--r--src/cairo-xlib-surface.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/cairo-xlib-surface.c b/src/cairo-xlib-surface.c
index 5fb9185c3..71ddafb96 100644
--- a/src/cairo-xlib-surface.c
+++ b/src/cairo-xlib-surface.c
@@ -1224,6 +1224,19 @@ _cairo_xlib_surface_draw_image (cairo_xlib_surface_t *surface,
return CAIRO_STATUS_SUCCESS;
}
+static cairo_surface_t *
+_cairo_xlib_surface_source(void *abstract_surface,
+ cairo_rectangle_int_t *extents)
+{
+ cairo_xlib_surface_t *surface = abstract_surface;
+
+ extents->x = extents->y = 0;
+ extents->width = surface->width;
+ extents->height = surface->height;
+
+ return &surface->base;
+}
+
static cairo_status_t
_cairo_xlib_surface_acquire_source_image (void *abstract_surface,
cairo_image_surface_t **image_out,
@@ -1400,6 +1413,7 @@ static const cairo_surface_backend_t cairo_xlib_surface_backend = {
_cairo_xlib_surface_map_to_image,
_cairo_xlib_surface_unmap_image,
+ _cairo_xlib_surface_source,
_cairo_xlib_surface_acquire_source_image,
_cairo_xlib_surface_release_source_image,
_cairo_xlib_surface_snapshot,