diff options
author | Devin J. Pohly <djpohly@gmail.com> | 2021-05-26 23:30:49 -0500 |
---|---|---|
committer | Devin J. Pohly <djpohly@gmail.com> | 2021-05-26 23:30:49 -0500 |
commit | bd2f7fbb4082d947ec2738cd31d403e9f0c10f50 (patch) | |
tree | 81202e7848b51b38f1b64702a0bb002ad44503a5 /dwl.c | |
parent | 823cefd2920085a0f74899fb679020005a1b6e0b (diff) |
exit cleanly on INT/TERM
Diffstat (limited to 'dwl.c')
-rw-r--r-- | dwl.c | 11 |
1 files changed, 10 insertions, 1 deletions
@@ -259,6 +259,7 @@ static void pointerfocus(Client *c, struct wlr_surface *surface, double sx, double sy, uint32_t time); static void printstatus(void); static void quit(const Arg *arg); +static void quitsignal(int signo); static void render(struct wlr_surface *surface, int sx, int sy, void *data); static void renderclients(Monitor *m, struct timespec *now); static void renderlayer(struct wl_list *layer_surfaces, struct timespec *now); @@ -1579,6 +1580,12 @@ quit(const Arg *arg) } void +quitsignal(int signo) +{ + quit(NULL); +} + +void render(struct wlr_surface *surface, int sx, int sy, void *data) { /* This function is called for every surface that needs to be rendered. */ @@ -1965,8 +1972,10 @@ setup(void) * clients from the Unix socket, manging Wayland globals, and so on. */ dpy = wl_display_create(); - /* clean up child processes immediately */ + /* Set up signal handlers */ sigchld(0); + signal(SIGINT, quitsignal); + signal(SIGTERM, quitsignal); /* The backend is a wlroots feature which abstracts the underlying input and * output hardware. The autocreate option will choose the most suitable |