summaryrefslogtreecommitdiff
path: root/src/cairo-glitz-surface.c
diff options
context:
space:
mode:
authorLuo Jinghua <sunmoon1997@gmail.com>2008-11-23 10:27:49 +0800
committerLuo Jinghua <sunmoon1997@gmail.com>2008-11-23 10:27:49 +0800
commit36c1b3e5919f119a054e425ca03f7ce810d3e7ec (patch)
tree6263abfc288781e1112a660b896302720a3ca1d3 /src/cairo-glitz-surface.c
parentc8b70aacc6b5523e2f73bebf4f61e876de1c3b3f (diff)
glitz: fixup a stupid bug in get_image.
_pixman_format_from_masks returns a boolean instead of cairo status code. Without this fix, get_image bails out over and over again even operations was completed successfully. :-(
Diffstat (limited to 'src/cairo-glitz-surface.c')
-rw-r--r--src/cairo-glitz-surface.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/cairo-glitz-surface.c b/src/cairo-glitz-surface.c
index eb066432..3c3fe16d 100644
--- a/src/cairo-glitz-surface.c
+++ b/src/cairo-glitz-surface.c
@@ -261,11 +261,12 @@ _cairo_glitz_surface_get_image (cairo_glitz_surface_t *surface,
surface->clip_boxes,
surface->num_clip_boxes);
- status = _pixman_format_from_masks (&masks, &pixman_format);
- if (status) {
- free (pixels);
- return status;
+ if (! _pixman_format_from_masks (&masks, &pixman_format))
+ {
+ status = _cairo_error (CAIRO_STATUS_INVALID_FORMAT);
+ goto FAIL;
}
+
image = (cairo_image_surface_t*)
_cairo_image_surface_create_with_pixman_format ((unsigned char *) pixels,
pixman_format,
@@ -273,7 +274,10 @@ _cairo_glitz_surface_get_image (cairo_glitz_surface_t *surface,
height,
pf.bytes_per_line);
if (image->base.status)
+ {
+ status = image->base.status;
goto FAIL;
+ }
_cairo_image_surface_assume_ownership_of_data (image);
@@ -283,7 +287,7 @@ _cairo_glitz_surface_get_image (cairo_glitz_surface_t *surface,
FAIL:
free (pixels);
- return _cairo_error (CAIRO_STATUS_NO_MEMORY);
+ return status;
}
static void