diff options
author | marha <marha@users.sourceforge.net> | 2012-08-31 15:18:29 +0200 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2012-09-04 14:23:28 +0200 |
commit | d7fc06ac528d54e0e1416cb8aa89b6fd072400a5 (patch) | |
tree | 74cccede044412bba5723a132f1385aa9259f04b /apps/xwininfo/dsimple.c | |
parent | 9dec848b23cf905ded387820f2893425cc00d545 (diff) | |
download | vcxsrv-d7fc06ac528d54e0e1416cb8aa89b6fd072400a5.tar.gz vcxsrv-d7fc06ac528d54e0e1416cb8aa89b6fd072400a5.tar.bz2 vcxsrv-d7fc06ac528d54e0e1416cb8aa89b6fd072400a5.zip |
randrproto xwininfo fontconfig libxcb mesa xkeyboard-config pixman xserver
git update 31 Aug 2012
Diffstat (limited to 'apps/xwininfo/dsimple.c')
-rw-r--r-- | apps/xwininfo/dsimple.c | 27 |
1 files changed, 23 insertions, 4 deletions
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); |