]> git.tuebingen.mpg.de Git - paraslash.git/blobdiff - alsa_write.c
Merge branch 'master' into next
[paraslash.git] / alsa_write.c
index f63b7a5eb43261183c3ee0e0920c5d23c20afa9e..b6a087a3d6b87353796dff34ac790d6c64f58e4d 100644 (file)
@@ -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);
 }