From: Luiz Augusto von Dentz <luiz.von.dentz@xxxxxxxxx> When a card is being created and no profile has been assigned pa_card_new will attempt to select one from the list but it does that without checking the available flag which can lead to select profiles not available. --- v2: Add better description and asserts if no available profile could be found src/pulsecore/card.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/pulsecore/card.c b/src/pulsecore/card.c index e6e0836..4ae16c2 100644 --- a/src/pulsecore/card.c +++ b/src/pulsecore/card.c @@ -195,9 +195,14 @@ pa_card *pa_card_new(pa_core *core, pa_card_new_data *data) { c->save_profile = data->save_profile; if (!c->active_profile) { - PA_HASHMAP_FOREACH(profile, c->profiles, state) + PA_HASHMAP_FOREACH(profile, c->profiles, state) { + if (profile->available == PA_AVAILABLE_NO) + continue; + if (!c->active_profile || profile->priority > c->active_profile->priority) c->active_profile = profile; + } + pa_assert(c->active_profile); } c->userdata = NULL; -- 1.8.3.1