diff options
author | Troy Moure <twmoure@szypr.net> | 2009-06-18 14:55:21 +0100 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2009-06-18 18:14:37 +0200 |
commit | d9a839d51255c939f394f770b249c8a4a9600122 (patch) | |
tree | c679ff0a63258abbf0844350b4d85d38620d5f3f | |
parent | 95d463cb38ad7b0ad6e1d1550b9e8195528cbc46 (diff) |
alsa-plugins/pulse: Implement 'pause'.
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>
-rw-r--r-- | pulse/pcm_pulse.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/pulse/pcm_pulse.c b/pulse/pcm_pulse.c index db8d1e1..c276839 100644 --- a/pulse/pcm_pulse.c +++ b/pulse/pcm_pulse.c @@ -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 }; |