From bfb34e44a1b323d6db67dc376986c707cad0477e Mon Sep 17 00:00:00 2001 From: Sjoerd Simons Date: Tue, 13 May 2008 14:16:06 +0200 Subject: pulse - Change to hook load_if_running Unfortunately some more testing revealed some issues with it, specifically if pulse is running your complete config is replaced the bits in the on_pulse_is_running directive. Which might not be what one actually wants :) I couldn't find a proper solution for this. So i've changed the code to optionally load config files. Just like the load hook does. Actually i just optionally call the snd_config_hook_load function, but that's not actually in the alsa API.... Also it now decides pulse is running as soon as the authorizing step begins (just after the actually connection is setup), which should save some round-trips and overhead. Signed-off-by: Takashi Iwai --- pulse/conf_pulse.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) (limited to 'pulse') diff --git a/pulse/conf_pulse.c b/pulse/conf_pulse.c index 78cf042..6627b31 100644 --- a/pulse/conf_pulse.c +++ b/pulse/conf_pulse.c @@ -26,14 +26,19 @@ #include +/* Not actually part of the alsa api.... */ +extern int +snd_config_hook_load (snd_config_t *root, snd_config_t *config, + snd_config_t **dst, snd_config_t *private_data); + int -conf_pulse_hook_on_is_running (snd_config_t *root, snd_config_t *config, +conf_pulse_hook_load_if_running (snd_config_t *root, snd_config_t *config, snd_config_t **dst, snd_config_t *private_data) { - snd_config_t *n = NULL; pa_mainloop *loop = NULL; pa_context *context = NULL; int ret = 0, err, state; + *dst = NULL; /* Defined if we're called inside the pulsedaemon itself */ if (getenv("PULSE_INTERNAL") != NULL) @@ -65,12 +70,12 @@ conf_pulse_hook_on_is_running (snd_config_t *root, snd_config_t *config, goto out; state = pa_context_get_state(context); - } while (state < PA_CONTEXT_READY); + } while (state < PA_CONTEXT_AUTHORIZING); - if (state != PA_CONTEXT_READY) + if (state > PA_CONTEXT_READY) goto out; - ret = snd_config_expand(config, root, NULL, private_data, &n); + ret = snd_config_hook_load(root, config, dst, private_data); out: if (context != NULL) @@ -79,10 +84,8 @@ out: if (loop != NULL) pa_mainloop_free(loop); - *dst = n; - return ret; } -SND_DLSYM_BUILD_VERSION(conf_pulse_hook_on_is_running, +SND_DLSYM_BUILD_VERSION(conf_pulse_hook_load_if_running, SND_CONFIG_DLSYM_VERSION_HOOK); -- cgit