summaryrefslogtreecommitdiffstats
path: root/gdk/mir/gdkmirwindowimpl.c
diff options
context:
space:
mode:
authorWilliam Hua <william.hua@canonical.com>2015-10-13 09:18:11 (GMT)
committerWilliam Hua <william.hua@canonical.com>2015-10-14 08:21:41 (GMT)
commitaf5792f14126382705b2de328e4266f03ad1f824 (patch)
tree0f8fce9bf8bf36d5cfdedddc6e80b428994305cf /gdk/mir/gdkmirwindowimpl.c
parent364732f2e6439d3f2e8c02092d30b7aeac0e5bb8 (diff)
downloadgtk+-af5792f14126382705b2de328e4266f03ad1f824.zip
gtk+-af5792f14126382705b2de328e4266f03ad1f824.tar.xz
mir: support more pixel formats
Diffstat (limited to 'gdk/mir/gdkmirwindowimpl.c')
-rw-r--r--gdk/mir/gdkmirwindowimpl.c37
1 files changed, 36 insertions, 1 deletions
diff --git a/gdk/mir/gdkmirwindowimpl.c b/gdk/mir/gdkmirwindowimpl.c
index 9b3a249..05bec83 100644
--- a/gdk/mir/gdkmirwindowimpl.c
+++ b/gdk/mir/gdkmirwindowimpl.c
@@ -423,7 +423,42 @@ gdk_mir_window_impl_ref_cairo_surface (GdkWindow *window)
ensure_surface (window);
mir_buffer_stream_get_graphics_region (mir_surface_get_buffer_stream (impl->surface), &region);
- g_assert (region.pixel_format == mir_pixel_format_argb_8888);
+
+ switch (region.pixel_format)
+ {
+ case mir_pixel_format_abgr_8888:
+ g_warning ("pixel format ABGR 8888 not supported, using ARGB 8888");
+ pixel_format = CAIRO_FORMAT_ARGB32;
+ break;
+ case mir_pixel_format_xbgr_8888:
+ g_warning ("pixel format XBGR 8888 not supported, using XRGB 8888");
+ pixel_format = CAIRO_FORMAT_RGB24;
+ break;
+ case mir_pixel_format_argb_8888:
+ pixel_format = CAIRO_FORMAT_ARGB32;
+ break;
+ case mir_pixel_format_xrgb_8888:
+ pixel_format = CAIRO_FORMAT_RGB24;
+ break;
+ case mir_pixel_format_bgr_888:
+ g_error ("pixel format BGR 888 not supported");
+ break;
+ case mir_pixel_format_rgb_888:
+ g_error ("pixel format RGB 888 not supported");
+ break;
+ case mir_pixel_format_rgb_565:
+ pixel_format = CAIRO_FORMAT_RGB16_565;
+ break;
+ case mir_pixel_format_rgba_5551:
+ g_error ("pixel format RGBA 5551 not supported");
+ break;
+ case mir_pixel_format_rgba_4444:
+ g_error ("pixel format RGBA 4444 not supported");
+ break;
+ default:
+ g_error ("unknown pixel format");
+ break;
+ }
cairo_surface = cairo_image_surface_create_for_data ((unsigned char *) region.vaddr,
pixel_format,