summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSjoerd Simons <sjoerd@luon.net>2008-05-13 14:16:06 +0200
committerTakashi Iwai <tiwai@suse.de>2008-06-06 15:55:03 +0200
commitbfb34e44a1b323d6db67dc376986c707cad0477e (patch)
tree7b0774e899982c5e2663854d0079cb1124a6b63f
parent5d1c1b862603937bc28a66c58131b7bebc11e8c6 (diff)
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 <tiwai@suse.de>
-rw-r--r--pulse/conf_pulse.c19
1 files changed, 11 insertions, 8 deletions
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 <pulse/pulseaudio.h>
+/* 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);