summaryrefslogtreecommitdiffstats
path: root/pulse
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 /pulse
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>
Diffstat (limited to 'pulse')
-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);