diff options
-rw-r--r-- | sway/commands.c | 13 | ||||
-rw-r--r-- | 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 <stdlib.h> #include <string.h> #include <unistd.h> -#include <sys/wait.h> #include <ctype.h> #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 <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(); + /* 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); +} |