X-Git-Url: http://git.tuebingen.mpg.de/?a=blobdiff_plain;f=audiod.c;h=a11835f287605e96a5142094fae4a8e8db03720d;hb=217c259f244ec0d00e90a313b3a8b6e79d77054f;hp=e950dedea157d3b4a6e6202814315a0b813862e8;hpb=5003c209ca8f863d6608268fedbad2c18fe06179;p=paraslash.git diff --git a/audiod.c b/audiod.c index e950dede..a11835f2 100644 --- a/audiod.c +++ b/audiod.c @@ -600,12 +600,14 @@ static int open_current_receiver(struct sched *s) * this period begins to avoid restarting the receiver that * belongs to the file just completed. */ - if (stat_task->server_stream_start.tv_sec != 0) + if (stat_task->server_stream_start.tv_sec != 0) { sched_request_timeout_ms(100, s); + return -1; + } } if (tv_diff(now, &afi[cafn].restart_barrier, &diff) < 0) { if (tv_diff(&s->timeout, &diff, NULL) > 0) - s->timeout = diff; + sched_request_timeout(&diff, s); else sched_min_delay(s); return -1; @@ -1059,9 +1061,14 @@ static bool try_to_close_slot(int slot_num) for (i = 0; i < a->num_filters; i++) if (s->fns && s->fns[i].task.error != -E_TASK_UNREGISTERED) return false; - for (i = 0; i < a->num_writers; i++) - if (s->wns && s->wns[i].task.error != -E_TASK_UNREGISTERED) + if (a->num_writers > 0) { + for (i = 0; i < a->num_writers; i++) + if (s->wns && s->wns[i].task.error != -E_TASK_UNREGISTERED) + return false; + } else { + if (s->wns && s->wns[0].task.error != -E_TASK_UNREGISTERED) return false; + } PARA_INFO_LOG("closing slot %d\n", slot_num); close_writers(s); _close_filters(s);