summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Coopersmith <alan.coopersmith@oracle.com>2012-08-25 14:05:18 -0700
committerAlan Coopersmith <alan.coopersmith@oracle.com>2012-08-29 22:03:53 -0700
commitaedc2ecc4de61211f5f6b8f27bd8681d0ab744dc (patch)
tree64c81630ff1b8b810a2d1262f6f2495ceec6d83e
parent4176bffd0261d7734617dc73ae6013e86dbb841d (diff)
Print more detailed error messages when xcb_connect fails
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> Reviewed-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
-rw-r--r--dsimple.c21
1 files changed, 17 insertions, 4 deletions
diff --git a/dsimple.c b/dsimple.c
index 51fb231..6432e13 100644
--- a/dsimple.c
+++ b/dsimple.c
@@ -108,13 +108,26 @@ 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) {