This is a tentative fix of https://gitlab.freedesktop.org/pulseaudio/pulseaudio/issues/185 The patch is implemented based on Tanu's design: https://lists.freedesktop.org/archives/pulseaudio-discuss/2018-October/030531.html So far, the patches only cover the sink and sink_input, don't touch the source and source_output yet. Based on these patches, I tested the switch between HDMI output and speaker, it worked as expected. If the way of changing sink/sink_input is basically correct and is worth to apply to the source/source_output, I will continue to write patches for them too. Hui Wang (4): change bool save_sink to char *preferred_sink move stream after default sink is changed. move streams to new appeared sinks if they prefer these sinks move stream when the active_port changes src/modules/dbus/iface-core.c | 2 +- src/modules/module-default-device-restore.c | 2 +- src/modules/module-device-manager.c | 2 +- src/modules/module-intended-roles.c | 2 +- src/modules/module-stream-restore.c | 47 ++++++++---- src/modules/module-switch-on-connect.c | 28 +------ src/pulsecore/cli-command.c | 2 +- src/pulsecore/core.c | 9 ++- src/pulsecore/core.h | 4 +- src/pulsecore/device-port.c | 18 ++++- src/pulsecore/protocol-native.c | 2 +- src/pulsecore/sink-input.c | 25 +++++-- src/pulsecore/sink-input.h | 7 +- src/pulsecore/sink.c | 83 ++++++++++++++++++++- src/pulsecore/sink.h | 3 + 15 files changed, 172 insertions(+), 64 deletions(-) -- 2.17.1 _______________________________________________ pulseaudio-discuss mailing list pulseaudio-discuss@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss