From 6383e1442cf3918ea71378ce46144e1bb5707882 Mon Sep 17 00:00:00 2001 From: Uli Schlachter Date: Mon, 25 Oct 2010 09:11:05 +0200 Subject: [PATCH] XCB: Check screen size in boilerplate Trying to create a window for drawing that is larger than the available screen space is a bad idea. When the test finishes and tries to grab the resulting image from the X server, the window's area that is outside of the screen will have undefined content. Signed-off-by: Uli Schlachter Signed-off-by: Chris Wilson --- boilerplate/cairo-boilerplate-xcb.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/boilerplate/cairo-boilerplate-xcb.c b/boilerplate/cairo-boilerplate-xcb.c index 0cac82b18..c3b059c1d 100644 --- a/boilerplate/cairo-boilerplate-xcb.c +++ b/boilerplate/cairo-boilerplate-xcb.c @@ -248,6 +248,12 @@ _cairo_boilerplate_xcb_create_window (const char *name, xtc->surface = NULL; s = xcb_setup_roots_iterator (xcb_get_setup (c)).data; + if (width > s->width_in_pixels || height > s->height_in_pixels) { + xcb_disconnect (c); + free (xtc); + return NULL; + } + xtc->is_pixmap = FALSE; xtc->drawable = xcb_generate_id (c); cookie = xcb_create_window_checked (c, @@ -319,6 +325,12 @@ _cairo_boilerplate_xcb_create_window_db (const char *name, xtc->surface = NULL; s = xcb_setup_roots_iterator (xcb_get_setup (c)).data; + if (width > s->width_in_pixels || height > s->height_in_pixels) { + xcb_disconnect (c); + free (xtc); + return NULL; + } + xtc->is_pixmap = FALSE; xtc->drawable = xcb_generate_id (c); cookie = xcb_create_window_checked (c,