X-Git-Url: http://git.tuebingen.mpg.de/?a=blobdiff_plain;ds=sidebyside;f=audiod.c;h=4a4a2ae70d307c6db2ca8779190277e6a8085271;hb=7cb8fa26cfdcb3d34f8be2b86c48ffc6d7b9d84a;hp=1bed20c03871caaaac50c21377746001891d4d61;hpb=e3af6b4410d78e266d5459063a31b2aadb055145;p=paraslash.git diff --git a/audiod.c b/audiod.c index 1bed20c0..4a4a2ae7 100644 --- a/audiod.c +++ b/audiod.c @@ -191,7 +191,7 @@ int get_audio_format_num(const char *name) * It has to to take into account that probably the stream was not started at * the beginning of the file, that the clock between the server and the client * host may differ and that playback of the stream was delayed, e.g. because - * the prebuffer filter is used in the filter chain of the given slot. + * the prebuffer filter is used in the filter configuration of the given slot. * * If no writer is active in the given slot, or \a slot_num is negative * (indicating that para_audiod runs in standby mode), an approximation based @@ -1028,6 +1028,7 @@ static void command_post_select(struct sched *s, struct task *t) ret = handle_connect(ct->fd); if (ret < 0) PARA_ERROR_LOG("%s\n", para_strerror(-ret)); + audiod_status_dump(); } static void init_command_task(struct command_task *ct) @@ -1151,10 +1152,19 @@ static void status_pre_select(struct sched *s, struct task *t) ret = btr_node_status(st->btrn, 0, BTR_NT_LEAF); if (ret > 0) goto min_delay; - if (!st->ct) + if (st->ct && audiod_status == AUDIOD_OFF) + goto min_delay; + if (!st->ct && audiod_status != AUDIOD_OFF) sched_request_barrier_or_min_delay(&st->restart_barrier, s); if (cafn >= 0) sched_request_barrier(&afi[cafn].restart_barrier, s); + /* + * If para_server is playing we'd like to have a smooth time display + * even if we are running in standby mode. So we request a timeout that + * expires at the next full second. + */ + if (stat_task->vss_status & VSS_STATUS_FLAG_PLAYING) + sched_request_timeout_ms(1000 - now->tv_usec / 1000, s); return; min_delay: sched_min_delay(s);