X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=audiod.c;h=d2a58bbe2a22dd2462e554a3dc9f0c3ca136e98a;hp=64925b76e6e6d3500186670ec5d4bf5e9f91dd08;hb=eec23a69402951596dfcd81825c79d355f7bba0c;hpb=c967924027fa0b94ebe2c6b28bc191578f7afaea diff --git a/audiod.c b/audiod.c index 64925b76..d2a58bbe 100644 --- a/audiod.c +++ b/audiod.c @@ -520,12 +520,13 @@ static void open_writers(struct slot_info *s) assert(s->wns == NULL); s->wns = para_calloc(PARA_MAX(1U, a->num_writers) * sizeof(struct writer_node)); - PARA_INFO_LOG("opening %s writers\n", audio_formats[s->format]); for (i = 0; i < a->num_writers; i++) { wn = s->wns + i; wn->conf = a->writer_conf[i]; wn->writer_num = a->writer_nums[i]; register_writer_node(wn, parent, &sched); + PARA_NOTICE_LOG("%s writer started in slot %d\n", + writer_names[a->writer_nums[i]], (int)(s - slot)); } } @@ -914,7 +915,7 @@ out: static int parse_filter_args(void) { - int i, j, ret, af_mask; + int i, j, ret, af_mask, num_matches; for (i = 0; i < conf.filter_given; i++) { char *arg; @@ -922,13 +923,18 @@ static int parse_filter_args(void) if (ret < 0) goto out; af_mask = ret; + num_matches = 0; FOR_EACH_AUDIO_FORMAT(j) { if ((af_mask & (1 << j)) == 0) /* no match */ continue; ret = add_filter(j, arg); if (ret < 0) goto out; + num_matches++; } + if (num_matches == 0) + PARA_WARNING_LOG("ignoring filter spec: %s\n", + conf.filter_arg[i]); } ret = init_default_filters(); /* use default values for the rest */ out: @@ -1063,27 +1069,6 @@ static void close_stat_pipe(void) audiod_status_dump(); } -/** - * close the connection to para_server and exit - * - * \param status the exit status which is passed to exit(3) - * \param msg the log message - * - * Log \a msg with loglevel \p EMERG, close the connection to para_server if - * open, and call \p exit(status). \a status should be either EXIT_SUCCESS or - * EXIT_FAILURE. - * - * \sa exit(3) - */ -void __noreturn clean_exit(int status, const char *msg) -{ - PARA_EMERG_LOG("%s\n", msg); - if (socket_name) - unlink(socket_name); - close_stat_pipe(); - exit(status); -} - /* avoid busy loop if server is down */ static void set_stat_task_restart_barrier(unsigned seconds) { @@ -1115,20 +1100,49 @@ static bool must_close_slot(int slot_num) return true; } +static void close_slot(int slot_num) +{ + struct slot_info *s = slot + slot_num; + + PARA_INFO_LOG("closing slot %d\n", slot_num); + close_writers(s); + close_filters(s); + close_receiver(slot_num); + clear_slot(slot_num); +} + static void close_unused_slots(void) { int i; - FOR_EACH_SLOT(i) { - struct slot_info *s = slot + i; - if (!must_close_slot(i)) - continue; - PARA_INFO_LOG("closing slot %d\n", i); - close_writers(s); - close_filters(s); - close_receiver(i); - clear_slot(i); - } + FOR_EACH_SLOT(i) + if (must_close_slot(i)) + close_slot(i); +} + +/** + * Close the connection to para_server and exit. + * + * \param status The exit status which is passed to exit(3). + * \param msg The log message + * + * Log \a msg with loglevel \p EMERG, close the connection to para_server and + * all slots, and call \p exit(status). \a status should be either EXIT_SUCCESS + * or EXIT_FAILURE. + * + * \sa exit(3). + */ +void __noreturn clean_exit(int status, const char *msg) +{ + int i; + + PARA_EMERG_LOG("%s\n", msg); + if (socket_name) + unlink(socket_name); + close_stat_pipe(); + FOR_EACH_SLOT(i) + close_slot(i); + exit(status); } /*