Some drivers don't have a card driver name, but they have a nice card name containing enough info. So we can use card name to search card config if we found driver name is not valid.
Signed-off-by: Scott Jiang scott.jiang.linux@gmail.com --- src/confmisc.c | 8 +++++++- 1 files changed, 7 insertions(+), 1 deletions(-)
diff --git a/src/confmisc.c b/src/confmisc.c index 80b0027..3c4b5aa 100644 --- a/src/confmisc.c +++ b/src/confmisc.c @@ -666,6 +666,7 @@ int snd_determine_driver(int card, char **driver) snd_ctl_t *ctl = NULL; snd_ctl_card_info_t *info; char *res = NULL; + const char *name = NULL; int err;
assert(card >= 0 && card <= 32); @@ -680,7 +681,12 @@ int snd_determine_driver(int card, char **driver) SNDERR("snd_ctl_card_info error: %s", snd_strerror(err)); goto __error; } - res = strdup(snd_ctl_card_info_get_driver(info)); + name = snd_ctl_card_info_get_driver(info); + /* if card driver name is empty string, try to use card name */ + if (name[0] == '\0') + name = snd_ctl_card_info_get_name(info); + + res = strdup(name); if (res == NULL) err = -ENOMEM; else {