At the moment, port names combined from multiple devices are generated
based on the order that the devices are specified in config. This makes
programmatic use of thsee ports a bit painful, so let's make them be
combined in alphabetical order.
---
src/modules/alsa/alsa-ucm.c | 21 ++++++++++++++++++---
1 file changed, 18 insertions(+), 3 deletions(-)
diff --git a/src/modules/alsa/alsa-ucm.c b/src/modules/alsa/alsa-ucm.c
index a6ee9a8..d88c80b 100644
--- a/src/modules/alsa/alsa-ucm.c
+++ b/src/modules/alsa/alsa-ucm.c
@@ -671,6 +671,14 @@ int pa_alsa_ucm_get_verb(snd_use_case_mgr_t *uc_mgr, const
char *verb_name, cons
return 0;
}
+static int pa_alsa_ucm_device_cmp(const void *a, const void *b)
+{
+ const pa_alsa_ucm_device *d1 = *(pa_alsa_ucm_device **)a;
+ const pa_alsa_ucm_device *d2 = *(pa_alsa_ucm_device **)b;
+
+ return strcmp(pa_proplist_gets(d1->proplist, PA_ALSA_PROP_UCM_NAME),
pa_proplist_gets(d2->proplist, PA_ALSA_PROP_UCM_NAME));
+}
+
static void ucm_add_port_combination(
pa_hashmap *hash,
pa_alsa_ucm_mapping_context *context,
@@ -687,9 +695,16 @@ static void ucm_add_port_combination(
char *name, *desc;
const char *dev_name;
const char *direction;
- pa_alsa_ucm_device *dev;
+ pa_alsa_ucm_device *sorted[num], *dev;
+
+ for (i = 0; i < num; i++)
+ sorted[i] = pdevices[i];
+
+ /* Sort by alphabetical order so as to have a deterministic naming scheme
+ * for combination ports */
+ qsort(&sorted[0], num, sizeof(pa_alsa_ucm_device *),
pa_alsa_ucm_device_cmp);
- dev = pdevices[0];
+ dev = sorted[0];
dev_name = pa_proplist_gets(dev->proplist, PA_ALSA_PROP_UCM_NAME);
name = pa_sprintf_malloc("%s%s", is_sink ? PA_UCM_PRE_TAG_OUTPUT :
PA_UCM_PRE_TAG_INPUT, dev_name);
@@ -701,7 +716,7 @@ static void ucm_add_port_combination(
for (i = 1; i < num; i++) {
char *tmp;
- dev = pdevices[i];
+ dev = sorted[i];
dev_name = pa_proplist_gets(dev->proplist, PA_ALSA_PROP_UCM_NAME);
tmp = pa_sprintf_malloc("%s+%s", name, dev_name);
--
1.8.2.1
_______________________________________________
pulseaudio-discuss mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss