Move xerror functions to "src/dwm/xerror.c"

This commit is contained in:
Alex Kotov 2021-11-17 21:59:08 +05:00
parent 631fdd6bcf
commit 2004b0cb97
Signed by: kotovalexarian
GPG key ID: 553C0EBBEB5D5F08
4 changed files with 52 additions and 40 deletions

View file

@ -33,7 +33,8 @@ DWM_SRC = \
src/dwm/handlers.c \ src/dwm/handlers.c \
src/dwm/layouts.c \ src/dwm/layouts.c \
src/dwm/swallow.c \ src/dwm/swallow.c \
src/dwm/systray.c src/dwm/systray.c \
src/dwm/xerror.c
MODULES_HDR = $(MODULES_SRC:.c=.h) MODULES_HDR = $(MODULES_SRC:.c=.h)
DWM_HDR = $(DWM_SRC:.c=.h) DWM_HDR = $(DWM_SRC:.c=.h)

View file

@ -278,15 +278,13 @@ static void view(const Arg *arg);
static void viewrel(const Arg *arg); static void viewrel(const Arg *arg);
static Client *wintoclient(Window w); static Client *wintoclient(Window w);
static Monitor *wintomon(Window w); static Monitor *wintomon(Window w);
static int xerror(Display *dpy, XErrorEvent *ee);
static int xerrordummy(Display *dpy, XErrorEvent *ee);
static int xerrorstart(Display *dpy, XErrorEvent *ee);
static void zoom(const Arg *arg); static void zoom(const Arg *arg);
#include "dwm/handlers.h" #include "dwm/handlers.h"
#include "dwm/layouts.h" #include "dwm/layouts.h"
#include "dwm/swallow.h" #include "dwm/swallow.h"
#include "dwm/systray.h" #include "dwm/systray.h"
#include "dwm/xerror.h"
/************* /*************
* variables * * variables *
@ -342,6 +340,7 @@ static xcb_connection_t *xcon;
#include "dwm/layouts.c" #include "dwm/layouts.c"
#include "dwm/swallow.c" #include "dwm/swallow.c"
#include "dwm/systray.c" #include "dwm/systray.c"
#include "dwm/xerror.c"
int int
main(int argc, char *argv[]) main(int argc, char *argv[])
@ -2419,42 +2418,6 @@ wintomon(Window w)
return selmon; return selmon;
} }
/* 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. */
int
xerror(Display *dpy, XErrorEvent *ee)
{
if (ee->error_code == BadWindow
|| (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;
fprintf(stderr, "polytreewm: fatal error: request code=%d, error code=%d\n",
ee->request_code, ee->error_code);
return xerrorxlib(dpy, ee); /* may call exit */
}
int
xerrordummy(Display *dpy, XErrorEvent *ee)
{
return 0;
}
/* Startup Error handler to check if another window manager
* is already running. */
int
xerrorstart(Display *dpy, XErrorEvent *ee)
{
die("polytreewm: another window manager is already running");
return -1;
}
void void
zoom(const Arg *arg) zoom(const Arg *arg)
{ {

40
src/dwm/xerror.c Normal file
View file

@ -0,0 +1,40 @@
#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. */
int
xerror(Display *dpy, XErrorEvent *ee)
{
if (ee->error_code == BadWindow
|| (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;
fprintf(stderr, "polytreewm: fatal error: request code=%d, error code=%d\n",
ee->request_code, ee->error_code);
return xerrorxlib(dpy, ee); /* may call exit */
}
int
xerrordummy(Display *dpy, XErrorEvent *ee)
{
return 0;
}
/* Startup Error handler to check if another window manager
* is already running. */
int
xerrorstart(Display *dpy, XErrorEvent *ee)
{
die("polytreewm: another window manager is already running");
return -1;
}
#endif // _DWM_XERROR_C

8
src/dwm/xerror.h Normal file
View file

@ -0,0 +1,8 @@
#ifndef _DWM_XERROR_H
#define _DWM_XERROR_H
static int xerror(Display *dpy, XErrorEvent *ee);
static int xerrordummy(Display *dpy, XErrorEvent *ee);
static int xerrorstart(Display *dpy, XErrorEvent *ee);
#endif // _DWM_XERROR_H