X-Git-Url: http://git.tuebingen.mpg.de/?a=blobdiff_plain;f=gui.c;h=c82cd8c32300b27d2bd6c5a8d15bff60e52fb372;hb=64e24b296546197f0e3c5bb1dc5af8ed16374f08;hp=370c731cb916ac00749ad6ccdfbdd8138d2c41cb;hpb=56d75bd90d78cf44cd3984ce2a45627ef5646d38;p=paraslash.git diff --git a/gui.c b/gui.c index 370c731c..c82cd8c3 100644 --- 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; } /**