From 5df5b0098971e4d7e278bd7dfc8d5a611a97f467 Mon Sep 17 00:00:00 2001 From: Taiyu Date: Thu, 13 Aug 2015 00:44:56 -0700 Subject: [PATCH] moved signal handling to main --- sway/commands.c | 13 ------------- sway/main.c | 12 ++++++++++++ 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/sway/commands.c b/sway/commands.c index edf9db7a..e82462bf 100644 --- a/sway/commands.c +++ b/sway/commands.c @@ -5,7 +5,6 @@ #include #include #include -#include #include #include "stringop.h" #include "layout.h" @@ -109,19 +108,7 @@ static bool cmd_bindsym(struct sway_config *config, int argc, char **argv) { return true; } -static void cmd_exec_cleanup(int signal) { - while (waitpid((pid_t)-1, 0, WNOHANG) > 0){}; -} - static bool cmd_exec_always(struct sway_config *config, int argc, char **argv) { - /* setup signal handler to cleanup dead proccesses */ - /* TODO: replace this with a function that has constructor attribute? */ - static bool cleanup = false; - if (cleanup == false) { - signal(SIGCHLD, cmd_exec_cleanup); - cleanup = true; - } - if (checkarg(argc, "exec_always", EXPECTED_MORE_THEN, 0) == false) { return false; } diff --git a/sway/main.c b/sway/main.c index 7661551d..7477b08c 100644 --- a/sway/main.c +++ b/sway/main.c @@ -2,16 +2,23 @@ #include #include #include +#include +#include #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(); + /* Signal handling */ + signal(SIGCHLD, sigchld_handle); + + setenv("WLC_DIM", "0", 0); if (!wlc_init(&interface, argc, argv)) { return 1; @@ -25,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); +}