From d7fc06ac528d54e0e1416cb8aa89b6fd072400a5 Mon Sep 17 00:00:00 2001 From: marha Date: Fri, 31 Aug 2012 15:18:29 +0200 Subject: randrproto xwininfo fontconfig libxcb mesa xkeyboard-config pixman xserver git update 31 Aug 2012 --- apps/xwininfo/dsimple.c | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) (limited to 'apps') diff --git a/apps/xwininfo/dsimple.c b/apps/xwininfo/dsimple.c index c09b192d5..d42e56aa3 100644 --- a/apps/xwininfo/dsimple.c +++ b/apps/xwininfo/dsimple.c @@ -109,19 +109,38 @@ void Setup_Display_And_Screen ( xcb_connection_t **dpy, /* MODIFIED */ xcb_screen_t **screen) /* MODIFIED */ { - int screen_number, i; + int screen_number, i, err; /* Open Display */ *dpy = xcb_connect (display_name, &screen_number); - if (xcb_connection_has_error (*dpy)) { - Fatal_Error ("unable to open display \"%s\"", - Get_Display_Name(display_name) ); + if ((err = xcb_connection_has_error (*dpy)) != 0) { + switch (err) { + case XCB_CONN_CLOSED_MEM_INSUFFICIENT: + Fatal_Error ("Failed to allocate memory in xcb_connect"); + case XCB_CONN_CLOSED_PARSE_ERR: + Fatal_Error ("unable to parse display name \"%s\"", + Get_Display_Name(display_name) ); +#ifdef XCB_CONN_CLOSED_INVALID_SCREEN + case XCB_CONN_CLOSED_INVALID_SCREEN: + Fatal_Error ("invalid screen %d in display \"%s\"", + screen_number, Get_Display_Name(display_name)); +#endif + default: + Fatal_Error ("unable to open display \"%s\"", + Get_Display_Name(display_name) ); + } } if (screen) { /* find our screen */ const xcb_setup_t *setup = xcb_get_setup(*dpy); xcb_screen_iterator_t screen_iter = xcb_setup_roots_iterator(setup); + int screen_count = xcb_setup_roots_length(setup); + if (screen_count <= screen_number) + { + Fatal_Error ("unable to access screen %d, max is %d", + screen_number, screen_count-1 ); + } for (i = 0; i < screen_number; i++) xcb_screen_next(&screen_iter); -- cgit v1.2.3