]> git.mdlowis.com Git - proto/labwc.git/commitdiff
server: handle SIGINT and SIGTERM
authorJohan Malm <jgm323@gmail.com>
Mon, 21 Dec 2020 18:56:46 +0000 (18:56 +0000)
committerJohan Malm <jgm323@gmail.com>
Mon, 21 Dec 2020 18:56:46 +0000 (18:56 +0000)
src/server.c

index b1f06b2dcf5afcf664e5c9a534fb0b33f4f2bf26..096267e395605472418b919df593e37ce6c3ba98 100644 (file)
@@ -15,6 +15,8 @@
 static struct wlr_compositor *compositor;
 static struct wl_event_source *sighup_source;
 static struct wl_event_source *sigchld_source;
+static struct wl_event_source *sigint_source;
+static struct wl_event_source *sigterm_source;
 
 static void
 reload_config_and_theme(void)
@@ -45,6 +47,15 @@ handle_sigchld(int signal, void *data)
        return 0;
 }
 
+static int
+handle_sigterm(int signal, void *data)
+{
+       struct wl_display *display = data;
+
+       wl_display_terminate(display);
+       return 0;
+}
+
 static void
 drop_permissions(void)
 {
@@ -77,6 +88,10 @@ server_init(struct server *server)
                event_loop, SIGHUP, handle_sighup, &server->wl_display);
        sigchld_source = wl_event_loop_add_signal(
                event_loop, SIGCHLD, handle_sigchld, NULL);
+       sigint_source = wl_event_loop_add_signal(
+               event_loop, SIGINT, handle_sigterm, NULL);
+       sigterm_source = wl_event_loop_add_signal(
+               event_loop, SIGTERM, handle_sigterm, NULL);
 
        /*
         * The backend is a feature which abstracts the underlying input and