X-Git-Url: http://git.tuebingen.mpg.de/?a=blobdiff_plain;f=alsa_write.c;h=bbbf8b650ac86c4952ac46f22c166583018bfb88;hb=2bad70d84e763b4d866d7b97dbc1cdc8e030bd45;hp=9822da674eda8029fe052e3c99c177e58816b8a5;hpb=f1fe6d2729f2b0e7b48557d9cc5ddb4412a6bf22;p=paraslash.git diff --git a/alsa_write.c b/alsa_write.c index 9822da67..bbbf8b65 100644 --- a/alsa_write.c +++ b/alsa_write.c @@ -297,13 +297,18 @@ again: if (bytes == 0) /* no data available */ return 0; pad = wn->private_data = para_calloc(sizeof(*pad)); - get_btr_sample_rate(btrn, &val); + ret = get_btr_sample_rate(btrn, &val); + if (ret < 0) + goto err; pad->sample_rate = val; - get_btr_channels(btrn, &val); + ret = get_btr_channels(btrn, &val); + if (ret < 0) + goto err; pad->channels = val; - get_btr_sample_format(btrn, &val); + ret = get_btr_sample_format(btrn, &val); + if (ret < 0) + goto err; pad->sample_format = get_alsa_pcm_format(val); - PARA_INFO_LOG("%u channel(s), %uHz\n", pad->channels, pad->sample_rate); ret = alsa_init(wn); @@ -326,7 +331,11 @@ again: goto again; } if (frames == -EPIPE) { - PARA_WARNING_LOG("underrun (tried to write %zu bytes)\n", bytes); + snd_pcm_status_t *status; + snd_pcm_status_malloc(&status); + if (snd_pcm_status_get_state(status) == SND_PCM_STATE_XRUN) + PARA_WARNING_LOG("underrun\n"); + snd_pcm_status_free(status); snd_pcm_prepare(pad->handle); return 0; }