From c8f065250dde966825f171ff817f7301f423a42e Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Sat, 23 Nov 2019 15:17:30 +0100 Subject: [PATCH] alsa-ucm: use ucm2 name for the direct card index open Signed-off-by: Jaroslav Kysela --- src/modules/alsa/alsa-ucm.c | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/src/modules/alsa/alsa-ucm.c b/src/modules/alsa/alsa-ucm.c index 0a40ca8fe654..aeb4e59e323c 100644 --- a/src/modules/alsa/alsa-ucm.c +++ b/src/modules/alsa/alsa-ucm.c @@ -576,17 +576,25 @@ int pa_alsa_ucm_query_profiles(pa_alsa_ucm_config *ucm, int card_index) { const char **verb_list; int num_verbs, i, err = 0; - /* is UCM available for this card ? */ - err = snd_card_get_name(card_index, &card_name); - if (err < 0) { - pa_log("Card can't get card_name from card_index %d", card_index); - goto name_fail; - } - + /* support multiple card instances, address card directly by index */ + card_name = pa_sprintf_malloc("hw:%i", card_index); + if (card_name == NULL) + return -ENOMEM; err = snd_use_case_mgr_open(&ucm->ucm_mgr, card_name); if (err < 0) { - pa_log_info("UCM not available for card %s", card_name); - goto ucm_mgr_fail; + /* fallback longname: is UCM available for this card ? */ + pa_xfree(card_name); + err = snd_card_get_name(card_index, &card_name); + if (err < 0) { + pa_log("Card can't get card_name from card_index %d", card_index); + goto name_fail; + } + + err = snd_use_case_mgr_open(&ucm->ucm_mgr, card_name); + if (err < 0) { + pa_log_info("UCM not available for card %s", card_name); + goto ucm_mgr_fail; + } } pa_log_info("UCM available for card %s", card_name); @@ -626,7 +634,7 @@ ucm_verb_fail: } ucm_mgr_fail: - free(card_name); + pa_xfree(card_name); name_fail: return err; -- 2.16.4