mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2025-11-04 13:29:59 -05:00
cli-command: don't exit on "module already loaded" errors
Some modules may only be loaded once, and trying to load them twice from default.pa makes PulseAudio startup fail. While that could be considered a user error, it's nicer to not be so strict. It's not necessarily easy to figure what went wrong, if for example the user plays with RAOP and adds module-raop-discover to default.pa, which first works fine, but suddenly stops working when the user at some point enables RAOP support in paprefs. Enabling RAOP in paprefs makes module-gconf load the module too, so the module gets loaded twice. This patch adds a way to differentiate module load errors, and make cli-command ignore the error when the module is already loaded.
This commit is contained in:
parent
1a66715320
commit
f0dfddead3
23 changed files with 62 additions and 36 deletions
|
|
@ -71,6 +71,7 @@ static pa_hook_result_t source_put_hook_callback(pa_core *c, pa_source *source,
|
|||
const char *s;
|
||||
const char *role;
|
||||
char *args;
|
||||
pa_module *m = NULL;
|
||||
|
||||
pa_assert(c);
|
||||
pa_assert(source);
|
||||
|
|
@ -100,7 +101,7 @@ static pa_hook_result_t source_put_hook_callback(pa_core *c, pa_source *source,
|
|||
/* Load module-loopback */
|
||||
args = pa_sprintf_malloc("source=\"%s\" source_dont_move=\"true\" sink_input_properties=\"media.role=%s\"", source->name,
|
||||
role);
|
||||
(void) pa_module_load(c, "module-loopback", args);
|
||||
(void) pa_module_load(&m, c, "module-loopback", args);
|
||||
pa_xfree(args);
|
||||
|
||||
return PA_HOOK_OK;
|
||||
|
|
@ -112,6 +113,7 @@ static pa_hook_result_t sink_put_hook_callback(pa_core *c, pa_sink *sink, void *
|
|||
const char *s;
|
||||
const char *role;
|
||||
char *args;
|
||||
pa_module *m = NULL;
|
||||
|
||||
pa_assert(c);
|
||||
pa_assert(sink);
|
||||
|
|
@ -139,7 +141,7 @@ static pa_hook_result_t sink_put_hook_callback(pa_core *c, pa_sink *sink, void *
|
|||
/* Load module-loopback */
|
||||
args = pa_sprintf_malloc("sink=\"%s\" sink_dont_move=\"true\" source_output_properties=\"media.role=%s\"", sink->name,
|
||||
role);
|
||||
(void) pa_module_load(c, "module-loopback", args);
|
||||
(void) pa_module_load(&m, c, "module-loopback", args);
|
||||
pa_xfree(args);
|
||||
|
||||
return PA_HOOK_OK;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue