From a8dce8bdcd9c2445e186253b8e5206ac1eb5bf61 Mon Sep 17 00:00:00 2001 From: uint23 Date: Thu, 17 Apr 2025 14:03:35 +0100 Subject: proper err handling --- src/sxwm.c | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) (limited to 'src/sxwm.c') diff --git a/src/sxwm.c b/src/sxwm.c index 14b13f2..2f0d0e6 100644 --- a/src/sxwm.c +++ b/src/sxwm.c @@ -21,7 +21,9 @@ #include #include +#include #include +#include #include #include "defs.h" @@ -635,9 +637,23 @@ update_borders(void) static int xerr(Display *dpy, XErrorEvent *ee) { - fprintf(stderr, "sxwm: fatal error\nrequest code:%d\nerror code:%d\n", - ee->request_code, ee->error_code); - return 0; + if (ee->error_code == BadWindow + || ee->error_code == BadDrawable + || (ee->request_code == X_ConfigureWindow && ee->error_code == BadMatch) + || (ee->request_code == X_SetInputFocus && ee->error_code == BadMatch)) + return 0; + + char buf[256]; + XGetErrorText(dpy, ee->error_code, buf, sizeof(buf)); + fprintf(stderr, + "sxwm: X error:\n" + " request code: %d\n" + " error code: %d (%s)\n" + " resource id: 0x%lx\n", + ee->request_code, + ee->error_code, buf, + ee->resourceid + ); return 0; if (dpy && ee) return 0; } -- cgit v1.2.3