Lennart Poettering 3205b5
From d9a839d51255c939f394f770b249c8a4a9600122 Mon Sep 17 00:00:00 2001
Lennart Poettering 3205b5
From: Troy Moure <twmoure@szypr.net>
Lennart Poettering 3205b5
Date: Thu, 18 Jun 2009 14:55:21 +0100
Lennart Poettering 3205b5
Subject: [PATCH 01/11] alsa-plugins/pulse: Implement 'pause'.
Lennart Poettering 3205b5
Lennart Poettering 3205b5
Just cork or uncork the stream to pause or unpause it.
Lennart Poettering 3205b5
Lennart Poettering 3205b5
Signed-off-by: Troy Moure <twmoure@szypr.net>
Lennart Poettering 3205b5
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Lennart Poettering 3205b5
---
Lennart Poettering 3205b5
 pulse/pcm_pulse.c |   25 +++++++++++++++++++++++++
Lennart Poettering 3205b5
 1 files changed, 25 insertions(+), 0 deletions(-)
Lennart Poettering 3205b5
Lennart Poettering 3205b5
diff --git a/pulse/pcm_pulse.c b/pulse/pcm_pulse.c
Lennart Poettering 3205b5
index db8d1e1..c276839 100644
Lennart Poettering 3205b5
--- a/pulse/pcm_pulse.c
Lennart Poettering 3205b5
+++ b/pulse/pcm_pulse.c
Lennart Poettering 3205b5
@@ -739,6 +739,30 @@ static int pulse_close(snd_pcm_ioplug_t * io)
Lennart Poettering 3205b5
 	return 0;
Lennart Poettering 3205b5
 }
Lennart Poettering 3205b5
 
Lennart Poettering 3205b5
+static int pulse_pause(snd_pcm_ioplug_t * io, int enable)
Lennart Poettering 3205b5
+{
Lennart Poettering 3205b5
+	snd_pcm_pulse_t *pcm = io->private_data;
Lennart Poettering 3205b5
+	int err = 0;
Lennart Poettering 3205b5
+
Lennart Poettering 3205b5
+	assert (pcm);
Lennart Poettering 3205b5
+	assert (pcm->p);
Lennart Poettering 3205b5
+
Lennart Poettering 3205b5
+	pa_threaded_mainloop_lock(pcm->p->mainloop);
Lennart Poettering 3205b5
+
Lennart Poettering 3205b5
+	if (pcm->stream) {
Lennart Poettering 3205b5
+		pa_operation *o;
Lennart Poettering 3205b5
+		o = pa_stream_cork(pcm->stream, enable, NULL, NULL);
Lennart Poettering 3205b5
+		if (o)
Lennart Poettering 3205b5
+			pa_operation_unref(o);
Lennart Poettering 3205b5
+		else
Lennart Poettering 3205b5
+			err = -EIO;
Lennart Poettering 3205b5
+	}
Lennart Poettering 3205b5
+
Lennart Poettering 3205b5
+	pa_threaded_mainloop_unlock(pcm->p->mainloop);
Lennart Poettering 3205b5
+
Lennart Poettering 3205b5
+	return err;
Lennart Poettering 3205b5
+}
Lennart Poettering 3205b5
+
Lennart Poettering 3205b5
 static const snd_pcm_ioplug_callback_t pulse_playback_callback = {
Lennart Poettering 3205b5
 	.start = pulse_start,
Lennart Poettering 3205b5
 	.stop = pulse_stop,
Lennart Poettering 3205b5
@@ -750,6 +774,7 @@ static const snd_pcm_ioplug_callback_t pulse_playback_callback = {
Lennart Poettering 3205b5
 	.prepare = pulse_prepare,
Lennart Poettering 3205b5
 	.hw_params = pulse_hw_params,
Lennart Poettering 3205b5
 	.close = pulse_close,
Lennart Poettering 3205b5
+	.pause = pulse_pause
Lennart Poettering 3205b5
 };
Lennart Poettering 3205b5
 
Lennart Poettering 3205b5
 
Lennart Poettering 3205b5
-- 
Lennart Poettering 3205b5
1.6.4
Lennart Poettering 3205b5