]> git.alsa-project.org Git - alsa-plugins.git/commitdiff
alsa-plugins/pulse: Implement 'pause'.
authorTroy Moure <twmoure@szypr.net>
Thu, 18 Jun 2009 13:55:21 +0000 (14:55 +0100)
committerTakashi Iwai <tiwai@suse.de>
Thu, 18 Jun 2009 16:14:37 +0000 (18:14 +0200)
Just cork or uncork the stream to pause or unpause it.

Signed-off-by: Troy Moure <twmoure@szypr.net>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
pulse/pcm_pulse.c

index db8d1e128184b394549f60e1703bc22b32070f39..c27683919a3ccd1a13eb14e5cd8a97f0a9d020eb 100644 (file)
@@ -739,6 +739,30 @@ static int pulse_close(snd_pcm_ioplug_t * io)
        return 0;
 }
 
+static int pulse_pause(snd_pcm_ioplug_t * io, int enable)
+{
+       snd_pcm_pulse_t *pcm = io->private_data;
+       int err = 0;
+
+       assert (pcm);
+       assert (pcm->p);
+
+       pa_threaded_mainloop_lock(pcm->p->mainloop);
+
+       if (pcm->stream) {
+               pa_operation *o;
+               o = pa_stream_cork(pcm->stream, enable, NULL, NULL);
+               if (o)
+                       pa_operation_unref(o);
+               else
+                       err = -EIO;
+       }
+
+       pa_threaded_mainloop_unlock(pcm->p->mainloop);
+
+       return err;
+}
+
 static const snd_pcm_ioplug_callback_t pulse_playback_callback = {
        .start = pulse_start,
        .stop = pulse_stop,
@@ -750,6 +774,7 @@ static const snd_pcm_ioplug_callback_t pulse_playback_callback = {
        .prepare = pulse_prepare,
        .hw_params = pulse_hw_params,
        .close = pulse_close,
+       .pause = pulse_pause
 };