list->device = -1;
err = try_config(list, list->siface, str);
}
- if (err < 0) {
- list->card = -1;
- err = try_config(list, list->siface, str);
- }
if (err == -ENOMEM)
goto __error;
}
return 0;
}
+static int add_software_devices(struct hint_list *list)
+{
+ int err;
+ snd_config_t *conf, *n;
+ snd_config_iterator_t i, next;
+ const char *str;
+
+ err = snd_config_search(snd_config, list->siface, &conf);
+ if (err < 0)
+ return err;
+ snd_config_for_each(i, next, conf) {
+ n = snd_config_iterator_entry(i);
+ if (snd_config_get_id(n, &str) < 0)
+ continue;
+ list->card = -1;
+ list->device = -1;
+ err = try_config(list, list->siface, str);
+ if (err == -ENOMEM)
+ return -ENOMEM;
+ }
+ return 0;
+}
+
/**
* \brief Return string list with device name hints.
* \param card Card number or -1 (means all cards)
if (err >= 0)
err = add_card(&list, card);
} else {
+ add_software_devices(&list);
err = snd_card_next(&card);
if (err < 0)
goto __error;