X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=audiod.c;h=8f246ba53a04bad687af14d428bec276c822f001;hp=acf41376f50f196414d327bfb11f506c4fe8d7e2;hb=218a175db8e7a43cad9073770ebdb24a7bdc64e8;hpb=173f53675e7763e0426c063eb5a90606786d25f4 diff --git a/audiod.c b/audiod.c index acf41376..8f246ba5 100644 --- a/audiod.c +++ b/audiod.c @@ -144,7 +144,7 @@ struct audiod_args_info conf; static char *socket_name; static struct audio_format_info afi[NUM_AUDIO_FORMATS]; -static struct signal_task signal_task_struct, *sig_task = &signal_task_struct; +static struct signal_task *signal_task; static struct status_task status_task_struct; @@ -355,8 +355,7 @@ err: static void setup_signal_handling(void) { - sig_task->fd = para_signal_init(); - PARA_INFO_LOG("signal pipe: fd %d\n", sig_task->fd); + signal_task = signal_init_or_die(); para_install_sighandler(SIGINT); para_install_sighandler(SIGTERM); para_install_sighandler(SIGHUP); @@ -986,12 +985,6 @@ static void init_local_sockets(struct command_task *ct) exit(EXIT_FAILURE); } -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 int signal_post_select(struct sched *s, void *context) { struct signal_task *st = context; @@ -1418,11 +1411,11 @@ int main(int argc, char *argv[]) if (conf.daemon_given) daemonize(false /* parent exits immediately */); - sig_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 = sig_task, + .context = signal_task, }, &sched); sched.default_timeout.tv_sec = 2; @@ -1430,6 +1423,7 @@ int main(int argc, char *argv[]) ret = schedule(&sched); audiod_cleanup(); sched_shutdown(&sched); + signal_shutdown(signal_task); if (ret < 0) PARA_EMERG_LOG("%s\n", para_strerror(-ret));