summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTanu Kaskinen <tanuk@iki.fi>2020-03-14 10:42:44 +0200
committerPulseAudio Marge Bot <pulseaudio-maintainers@lists.freedesktop.org>2020-12-10 16:43:17 +0000
commit6b04e2a89e2a0a8b4f6aecb38fd00d82914f7050 (patch)
tree79d205d0e2abf22daf8e41b8c76b78f507db2f63
parent3afb7f8c08ab6ce8e47075f7484f470c8c561a11 (diff)
downloadpulseaudio-6b04e2a89e2a0a8b4f6aecb38fd00d82914f7050.tar.gz
sink: Reduce chat sink priority
Some gaming sound cards have custom profiles with analog-game and analog-chat mappings that exist simultaneously. The game sink should have higher priority than the chat sink, but currently there's no way to affect the sink priorities from the profile-set configuration (the mapping priority is not propagated to the sink priority). I first thought about adding the mapping priority to the sink priority, but that could mess up the prioritization system in pa_device_init_priority(). I ended up checking for the intended roles property to reduce the chat sink priority. I also reduced the iec958 priority so that the chat and iec958 sinks don't end up with the same priority. Fixes: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/issues/818 Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/266>
-rw-r--r--src/pulsecore/sink.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/pulsecore/sink.c b/src/pulsecore/sink.c
index e89b59655..8bb67f6d4 100644
--- a/src/pulsecore/sink.c
+++ b/src/pulsecore/sink.c
@@ -3609,10 +3609,18 @@ unsigned pa_device_init_priority(pa_proplist *p) {
if ((s = pa_proplist_gets(p, PA_PROP_DEVICE_PROFILE_NAME))) {
- if (pa_startswith(s, "analog-"))
+ if (pa_startswith(s, "analog-")) {
priority += 9;
+
+ /* If an analog device has an intended role of "phone", it probably
+ * co-exists with another device that is meant for everything else,
+ * and that other device should have higher priority than the phone
+ * device. */
+ if (pa_str_in_list_spaces(pa_proplist_gets(p, PA_PROP_DEVICE_INTENDED_ROLES), "phone"))
+ priority -= 1;
+ }
else if (pa_startswith(s, "iec958-"))
- priority += 8;
+ priority += 7;
}
return priority;