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 <psychon@znc.in>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
This commit is contained in:
Uli Schlachter 2010-10-25 09:11:05 +02:00 committed by Chris Wilson
parent daaef055b5
commit 6383e1442c

View file

@ -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,