diff options
Diffstat (limited to 'src/mixer/pulse_mixer.c')
-rw-r--r-- | src/mixer/pulse_mixer.c | 53 |
1 files changed, 24 insertions, 29 deletions
diff --git a/src/mixer/pulse_mixer.c b/src/mixer/pulse_mixer.c index d0422294e..d00a36a25 100644 --- a/src/mixer/pulse_mixer.c +++ b/src/mixer/pulse_mixer.c @@ -175,19 +175,35 @@ pulse_mixer_init(const struct config_param *param) pm->output_name = param != NULL ? config_dup_block_string(param, "name", NULL) : NULL; - g_debug("init"); + return &pm->base; +} + +static void +pulse_mixer_finish(struct mixer *data) +{ + struct pulse_mixer *pm = (struct pulse_mixer *) data; + pm->context = NULL; + pm->mainloop = NULL; + pm->volume = NULL; + pm->online = false; + g_free(pm); +} + +static bool +pulse_mixer_open(G_GNUC_UNUSED struct mixer *data) +{ + struct pulse_mixer *pm = (struct pulse_mixer *) data; + g_debug("pulse mixer open"); if(!(pm->mainloop = pa_threaded_mainloop_new())) { g_debug("failed mainloop"); - g_free(pm); - return NULL; + return false; } if(!(pm->context = pa_context_new(pa_threaded_mainloop_get_api(pm->mainloop), "Mixer mpd"))) { g_debug("failed context"); - g_free(pm); - return NULL; + return false; } pa_context_set_state_callback(pm->context, context_state_cb, pm); @@ -195,45 +211,24 @@ pulse_mixer_init(const struct config_param *param) if (pa_context_connect(pm->context, pm->server, (pa_context_flags_t)0, NULL) < 0) { g_debug("context server fail"); - g_free(pm); - return NULL; + return false; } pa_threaded_mainloop_lock(pm->mainloop); if (pa_threaded_mainloop_start(pm->mainloop) < 0) { g_debug("error start mainloop"); - g_free(pm); - return NULL; + return false; } pa_threaded_mainloop_wait(pm->mainloop); if (pa_context_get_state(pm->context) != PA_CONTEXT_READY) { g_debug("error context not ready"); - g_free(pm); - return NULL; + return false; } pa_threaded_mainloop_unlock(pm->mainloop); - return &pm->base ; -} - -static void -pulse_mixer_finish(struct mixer *data) -{ - struct pulse_mixer *pm = (struct pulse_mixer *) data; - pm->context = NULL; - pm->mainloop = NULL; - pm->volume = NULL; - pm->online = false; - g_free(pm); -} - -static bool -pulse_mixer_open(G_GNUC_UNUSED struct mixer *data) -{ - g_debug("pulse mixer open"); return true; } |