X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=osx_write.c;h=551748a4e1f990b12e120a9c15d4fe1d6b2dc19d;hp=c2b7b2f48aef0de6bdf6a08c2e86269698590fd9;hb=2ef39ae4d1e6b0d95991d2b980621fb152211444;hpb=d56a8447f418cf9046077e743772a416b6f7b826 diff --git a/osx_write.c b/osx_write.c index c2b7b2f4..551748a4 100644 --- a/osx_write.c +++ b/osx_write.c @@ -347,13 +347,15 @@ static void osx_write_pre_select(struct sched *s, struct task *t) struct private_osx_write_data *powd = wn->private_data; struct timeval tmp = {.tv_sec = 1, .tv_usec = 0}, delay = tmp; unsigned long divisor; - size_t numbytes = powd->to->remaining * sizeof(short); + size_t numbytes; int ret = btr_node_status(wn->btrn, wn->min_iqs, BTR_NT_LEAF); - if (ret < 0) - sched_min_delay(s); - if (ret <= 0 || numbytes < wn->min_iqs) + if (ret == 0) return; + if (ret < 0 || !powd->audio_unit) + return sched_min_delay(s); + numbytes = powd->to->remaining * sizeof(short); + assert(numbytes > 0); divisor = powd->sample_rate * wn->min_iqs / numbytes; if (divisor) tv_divide(divisor, &tmp, &delay);