card: Park profiles correctly when switching between virtual profiles.

Virtual profiles don't have output or input mappings so calling park_profile()
for one is no-op. To correctly park the sink and source ports we need to call
park_profiles() for the last active real profile.

[card] Park profiles correctly when switching between virtual profiles. JB#47194
This commit is contained in:
Juho Hämäläinen 2019-12-09 13:44:31 +02:00
parent b36b2431fb
commit 976a6cf58c

View file

@ -543,7 +543,7 @@ static pa_card_profile *leave_virtual_profile(struct userdata *u, pa_card *c,
pa_log_debug("Leave virtual profile %s", current->droid_profile->name);
if (next->mode != current->mode) {
park_profile(current->droid_profile);
park_profile(card_get_droid_profile(u->real_profile));
pa_droid_hw_set_mode(u->hw_module, next->mode);
}
@ -596,7 +596,7 @@ static void enter_virtual_profile(struct userdata *u, pa_card *c,
}
if (next->mode != current->mode) {
park_profile(current->droid_profile);
park_profile(card_get_droid_profile(u->real_profile));
pa_droid_hw_set_mode(u->hw_module, next->mode);
}