X-Git-Url: http://git.tuebingen.mpg.de/?a=blobdiff_plain;ds=sidebyside;f=alsa_write.c;h=3428def83076b9f8b89fc4c1e41bd0c921e54fbb;hb=2ef39ae4d1e6b0d95991d2b980621fb152211444;hp=aa772daaae48bbd135d222b0eca3d70543d3060c;hpb=bb991c66000ea867d0fcbd692ffdc5473eb785fb;p=paraslash.git diff --git a/alsa_write.c b/alsa_write.c index aa772daa..3428def8 100644 --- a/alsa_write.c +++ b/alsa_write.c @@ -143,10 +143,9 @@ static int alsa_init(struct private_alsa_write_data *pad, } /* Open an instance of the alsa writer. */ -static int alsa_open(struct writer_node *wn) +static void alsa_open(struct writer_node *wn) { wn->private_data = para_calloc(sizeof(struct private_alsa_write_data)); - return 1; } static void alsa_write_pre_select(struct sched *s, struct task *t) @@ -155,15 +154,12 @@ static void alsa_write_pre_select(struct sched *s, struct task *t) struct private_alsa_write_data *pad = wn->private_data; struct timeval tv; snd_pcm_sframes_t avail, underrun; - int ret; + int ret = btr_node_status(wn->btrn, wn->min_iqs, BTR_NT_LEAF); - if (!pad->handle) - return; - ret = btr_node_status(wn->btrn, wn->min_iqs, BTR_NT_LEAF); - if (ret < 0) - sched_request_timeout_ms(20, s); - if (ret <= 0) + if (ret == 0) return; + if (ret < 0 || !pad->handle) + return sched_min_delay(s); /* * Data is available to be written to the alsa handle. Compute number * of milliseconds until next buffer underrun would occur.