aboutsummaryrefslogtreecommitdiffstats
path: root/src/output/pulse_plugin.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/output/pulse_plugin.c')
-rw-r--r--src/output/pulse_plugin.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/output/pulse_plugin.c b/src/output/pulse_plugin.c
index a03275a22..25ef537d6 100644
--- a/src/output/pulse_plugin.c
+++ b/src/output/pulse_plugin.c
@@ -17,6 +17,7 @@
*/
#include "../output_api.h"
+#include "../mixer_api.h"
#include <glib.h>
#include <pulse/simple.h>
@@ -26,6 +27,7 @@
struct pulse_data {
const char *name;
+ struct mixer *mixer;
pa_simple *s;
char *server;
@@ -58,6 +60,7 @@ static void pulse_free_data(struct pulse_data *pd)
g_free(pd->server);
g_free(pd->sink);
g_free(pd);
+ mixer_free(pd->mixer);
}
static void *
@@ -73,6 +76,8 @@ pulse_init(G_GNUC_UNUSED const struct audio_format *audio_format,
pd->sink = param != NULL
? config_dup_block_string(param, "sink", NULL) : NULL;
+ pd->mixer=mixer_new(&pulse_mixer, param);
+
return pd;
}
@@ -83,6 +88,15 @@ static void pulse_finish(void *data)
pulse_free_data(pd);
}
+static struct mixer *
+pulse_get_mixer(void *data)
+{
+ struct pulse_data *pd = data;
+
+ return pd->mixer;
+}
+
+
static bool pulse_test_default_device(void)
{
pa_simple *s;
@@ -131,6 +145,7 @@ pulse_open(void *data, struct audio_format *audio_format, GError **error_r)
pa_strerror(error));
return false;
}
+ mixer_open(pd->mixer);
return true;
}
@@ -173,6 +188,7 @@ const struct audio_output_plugin pulse_plugin = {
.test_default_device = pulse_test_default_device,
.init = pulse_init,
.finish = pulse_finish,
+ .get_mixer = pulse_get_mixer,
.open = pulse_open,
.play = pulse_play,
.cancel = pulse_cancel,