X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=alsa_write.c;h=b6a087a3d6b87353796dff34ac790d6c64f58e4d;hp=f63b7a5eb43261183c3ee0e0920c5d23c20afa9e;hb=1583369f6defebc7f44249b9ce4cc01f717db3b9;hpb=90e7bf17d7b535c66887414baa5c2187822117c3 diff --git a/alsa_write.c b/alsa_write.c index f63b7a5e..b6a087a3 100644 --- a/alsa_write.c +++ b/alsa_write.c @@ -45,8 +45,8 @@ struct private_alsa_write_data { */ unsigned samplerate; /** - * the number of channels, also given by command line option or the - * decoder of the writer node group + * The number of channels, given by command line option or the + * decoder of the writer node group. */ unsigned channels; }; @@ -164,7 +164,7 @@ static int alsa_write_post_select(__a_unused struct sched *s, struct private_alsa_write_data *pad = wn->private_data; struct writer_node_group *wng = wn->wng; size_t frames, bytes = *wng->loaded - wn->written; - unsigned char *data = (unsigned char*)wng->buf + wn->written; + unsigned char *data = (unsigned char*)*wng->bufp + wn->written; struct timeval tv; snd_pcm_sframes_t ret; @@ -211,9 +211,12 @@ static void alsa_close(struct writer_node *wn) { struct private_alsa_write_data *pad = wn->private_data; PARA_INFO_LOG("closing writer node %p\n", wn); - snd_pcm_drain(pad->handle); - snd_pcm_close(pad->handle); - snd_config_update_free_global(); + + if (pad->handle) { + snd_pcm_drain(pad->handle); + snd_pcm_close(pad->handle); + snd_config_update_free_global(); + } free(pad); }