diff options
Diffstat (limited to 'src/output/pulse_plugin.c')
-rw-r--r-- | src/output/pulse_plugin.c | 16 |
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, |