diff options
author | Carlos Garcia Campos <cgarcia@igalia.com> | 2011-10-27 18:09:23 +0200 |
---|---|---|
committer | Carlos Garcia Campos <cgarcia@igalia.com> | 2011-10-27 18:13:29 +0200 |
commit | 8ddecc08a5e4fc43368c01e4e85215962b009b92 (patch) | |
tree | c6725ddd54958779fadb468a1abdb490b878b914 /src/cairo-xlib-surface.c | |
parent | 5c3156667898a1b111ae586c69c66378b7dafed6 (diff) |
xlib: Check pixman format before trying to create an image surface for it
Diffstat (limited to 'src/cairo-xlib-surface.c')
-rw-r--r-- | src/cairo-xlib-surface.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/src/cairo-xlib-surface.c b/src/cairo-xlib-surface.c index 1806e64b2..0ec126463 100644 --- a/src/cairo-xlib-surface.c +++ b/src/cairo-xlib-surface.c @@ -687,12 +687,15 @@ _get_image_surface (cairo_xlib_surface_t *surface, xlib_masks.red_mask = surface->r_mask; xlib_masks.green_mask = surface->g_mask; xlib_masks.blue_mask = surface->b_mask; - _pixman_format_from_masks (&xlib_masks, &pixman_format); - return _cairo_image_surface_create_with_pixman_format (NULL, - pixman_format, - extents->width, - extents->height, - 0); + if (_pixman_format_from_masks (&xlib_masks, &pixman_format) && + _cairo_format_from_pixman_format (pixman_format) != CAIRO_FORMAT_INVALID) + { + return _cairo_image_surface_create_with_pixman_format (NULL, + pixman_format, + extents->width, + extents->height, + 0); + } } status = _cairo_xlib_display_acquire (surface->base.device, &display); |