]> git.tuebingen.mpg.de Git - paraslash.git/blobdiff - gui.c
Merge branch 'refs/heads/t/abtract_sockets'
[paraslash.git] / gui.c
diff --git a/gui.c b/gui.c
index 370c731cb916ac00749ad6ccdfbdd8138d2c41cb..c82cd8c32300b27d2bd6c5a8d15bff60e52fb372 100644 (file)
--- a/gui.c
+++ b/gui.c
@@ -1132,12 +1132,6 @@ static int input_post_select(__a_unused struct sched *s, __a_unused void *contex
        return 0;
 }
 
-static void signal_pre_select(struct sched *s, void *context)
-{
-       struct signal_task *st = context;
-       para_fd_set(st->fd, &s->rfds, &s->max_fileno);
-}
-
 static void print_scroll_msg(void)
 {
        unsigned lines_total, filled = ringbuffer_filled(bot_win_rb);
@@ -1408,10 +1402,11 @@ __noreturn static void print_help_and_die(void)
 
 static int setup_tasks_and_schedule(void)
 {
+       int ret;
        struct exec_task exec_task = {.task = NULL};
        struct status_task status_task = {.fd = -1};
        struct input_task input_task = {.task = NULL};
-       struct signal_task signal_task = {.task = NULL};
+       struct signal_task *signal_task;
        struct sched sched = {
                .default_timeout = {
                        .tv_sec = conf.timeout_arg  / 1000,
@@ -1440,18 +1435,21 @@ static int setup_tasks_and_schedule(void)
                .context = &input_task,
        }, &sched);
 
-       signal_task.fd = para_signal_init();
+       signal_task = signal_init_or_die();
        para_install_sighandler(SIGINT);
        para_install_sighandler(SIGTERM);
        para_install_sighandler(SIGCHLD);
        para_install_sighandler(SIGUSR1);
-       signal_task.task = task_register(&(struct task_info) {
+       signal_task->task = task_register(&(struct task_info) {
                .name = "signal",
                .pre_select = signal_pre_select,
                .post_select = signal_post_select,
-               .context = &signal_task,
+               .context = signal_task,
        }, &sched);
-       return schedule(&sched);
+       ret = schedule(&sched);
+       sched_shutdown(&sched);
+       signal_shutdown(signal_task);
+       return ret;
 }
 
 /**