sink/source: Don't update default sink/source before calling PA_CORE_HOOK_{SINK,SOURC...
authorGeorg Chini <georg@chini.tk>
Thu, 18 May 2017 05:47:27 +0000 (07:47 +0200)
committerGeorg Chini <georg@chini.tk>
Thu, 18 May 2017 05:47:27 +0000 (07:47 +0200)
commite08124f6ba09d553e3a9a3b8fee16f3a83571122
tree80fdd01de3ff0cc52053cfbfdceb11bf8c967dd2
parentedc465da77874a1058cec0ab3714922e1ec0cc27
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.
src/modules/module-switch-on-connect.c
src/pulsecore/sink.c
src/pulsecore/source.c