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>
This commit is contained in:
Tanu Kaskinen 2020-03-14 10:42:44 +02:00 committed by PulseAudio Marge Bot
parent 3afb7f8c08
commit 6b04e2a89e

View file

@ -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;