mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2025-11-07 13:30:03 -05:00
sink/source: Don't update default sink/source before calling PA_CORE_HOOK_{SINK,SOURCE}_PUT
In sink_put() and source_put(), pa_core_update_default_{sink,source}() was called
before the PA_CORE_HOOK_{SINK,SOURCE}_PUT hook. Therefore module-switch-on-connect
could not correctly determine the old default sink/source if no user default was
set and a sink/source with higher priority than any other sink/source turned up.
This patch corrects the problem by swapping the order of the hook call and the
pa_core_update_default_sink() call.
Additionally it corrects a problem in module-switch-on-connect. If, after the
change above, the new sink/source was the first sink/source to appear, pulseaudio
would crash because module-switch-on-connect assumed that the default sink/source
was not NULL. The patch checks if the default sink/source is NULL and only sets
the new default sink/source in that case.
This commit is contained in:
parent
edc465da77
commit
e08124f6ba
3 changed files with 20 additions and 4 deletions
|
|
@ -75,6 +75,12 @@ static pa_hook_result_t sink_put_hook_callback(pa_core *c, pa_sink *sink, void*
|
|||
return PA_HOOK_OK;
|
||||
}
|
||||
|
||||
/* No default sink, nothing to move away, just set the new default */
|
||||
if (!c->default_sink) {
|
||||
pa_core_set_configured_default_sink(c, sink);
|
||||
return PA_HOOK_OK;
|
||||
}
|
||||
|
||||
if (c->default_sink == sink)
|
||||
return PA_HOOK_OK;
|
||||
|
||||
|
|
@ -135,6 +141,12 @@ static pa_hook_result_t source_put_hook_callback(pa_core *c, pa_source *source,
|
|||
return PA_HOOK_OK;
|
||||
}
|
||||
|
||||
/* No default source, nothing to move away, just set the new default */
|
||||
if (!c->default_source) {
|
||||
pa_core_set_configured_default_source(c, source);
|
||||
return PA_HOOK_OK;
|
||||
}
|
||||
|
||||
if (c->default_source == source)
|
||||
return PA_HOOK_OK;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue