summaryrefslogtreecommitdiff
path: root/src/cairo-xlib-surface.c
diff options
context:
space:
mode:
authorAndrea Canciani <ranma42@gmail.com>2012-01-11 17:17:15 +0100
committerAndrea Canciani <ranma42@gmail.com>2012-05-26 16:06:31 +0200
commitd6fb8d2134c989d2ad455ec37ce4f623d4769c46 (patch)
tree12aeb32512023e16fa6afbf699dfdcd4a01b3909 /src/cairo-xlib-surface.c
parentdf7829e2cca07c3bfcddda1c66ca56280edceaf4 (diff)
downloadcairo-d6fb8d2134c989d2ad455ec37ce4f623d4769c46.tar.gz
surface: Make backend-specific map/unmap functions symmetric
Map allocates a surface. Symmetrically, unmap should destroy it.
Diffstat (limited to 'src/cairo-xlib-surface.c')
-rw-r--r--src/cairo-xlib-surface.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/src/cairo-xlib-surface.c b/src/cairo-xlib-surface.c
index 9dadca6fd..59a7885fc 100644
--- a/src/cairo-xlib-surface.c
+++ b/src/cairo-xlib-surface.c
@@ -1294,11 +1294,18 @@ static cairo_int_status_t
_cairo_xlib_surface_unmap_image (void *abstract_surface,
cairo_image_surface_t *image)
{
- return _cairo_xlib_surface_draw_image (abstract_surface, image,
- 0, 0,
- image->width, image->height,
- image->base.device_transform_inverse.x0,
- image->base.device_transform_inverse.y0);
+ cairo_int_status_t status;
+
+ status = _cairo_xlib_surface_draw_image (abstract_surface, image,
+ 0, 0,
+ image->width, image->height,
+ image->base.device_transform_inverse.x0,
+ image->base.device_transform_inverse.y0);
+
+ cairo_surface_finish (&image->base);
+ cairo_surface_destroy (&image->base);
+
+ return status;
}
static cairo_bool_t