diff options
Diffstat (limited to 'sway/main.c')
-rw-r--r-- | sway/main.c | 35 |
1 files changed, 11 insertions, 24 deletions
diff --git a/sway/main.c b/sway/main.c index a7814364..7477b08c 100644 --- a/sway/main.c +++ b/sway/main.c @@ -2,40 +2,22 @@ #include <stdlib.h> #include <stdbool.h> #include <wlc/wlc.h> +#include <sys/wait.h> +#include <signal.h> #include "layout.h" #include "config.h" #include "log.h" #include "handlers.h" +static void sigchld_handle(int signal); int main(int argc, char **argv) { init_log(L_DEBUG); // TODO: Control this with command line arg init_layout(); - static struct wlc_interface interface = { - .output = { - .created = handle_output_created, - .destroyed = handle_output_destroyed, - .resolution = handle_output_resolution_change, - .focus = handle_output_focused - }, - .view = { - .created = handle_view_created, - .destroyed = handle_view_destroyed, - .focus = handle_view_focus, - .request = { - .geometry = handle_view_geometry_request - } - }, - .keyboard = { - .key = handle_key - }, - .pointer = { - .motion = handle_pointer_motion, - .button = handle_pointer_button - } - - }; + /* Signal handling */ + signal(SIGCHLD, sigchld_handle); + setenv("WLC_DIM", "0", 0); if (!wlc_init(&interface, argc, argv)) { @@ -50,3 +32,8 @@ int main(int argc, char **argv) { wlc_run(); return 0; } + +static void sigchld_handle(int signal) { + (void) signal; + while (waitpid((pid_t)-1, 0, WNOHANG) > 0); +} |