polytreewm/src/dwm/xerror.c

39 lines
1.2 KiB
C
Raw Normal View History

#ifndef _DWM_XERROR_C
#define _DWM_XERROR_C
/* There's no way to check accesses to destroyed windows, thus those cases are
* ignored (especially on UnmapNotify's). Other types of errors call Xlibs
* default error handler, which may call exit. */
2021-11-18 18:50:43 +00:00
int xerror(Display *const dpy, XErrorEvent *const ee)
{
if (ee->error_code == BadWindow
2021-11-17 17:00:44 +00:00
|| (ee->request_code == X_SetInputFocus && ee->error_code == BadMatch)
|| (ee->request_code == X_PolyText8 && ee->error_code == BadDrawable)
|| (ee->request_code == X_PolyFillRectangle && ee->error_code == BadDrawable)
|| (ee->request_code == X_PolySegment && ee->error_code == BadDrawable)
|| (ee->request_code == X_ConfigureWindow && ee->error_code == BadMatch)
|| (ee->request_code == X_GrabButton && ee->error_code == BadAccess)
|| (ee->request_code == X_GrabKey && ee->error_code == BadAccess)
|| (ee->request_code == X_CopyArea && ee->error_code == BadDrawable))
{
return 0;
2021-11-17 17:00:44 +00:00
}
2021-11-21 02:25:19 +00:00
fatal_nodie(
"request code=%d, error code=%d\n",
2021-11-17 17:00:44 +00:00
ee->request_code,
ee->error_code
);
return xbase->x_error(dpy, ee); /* may call exit */
}
2021-11-18 18:50:43 +00:00
int xerrordummy(
__attribute__((unused)) Display *const dpy,
__attribute__((unused)) XErrorEvent *const ee
) {
return 0;
}
#endif // _DWM_XERROR_C