Currently UCM ports are created at the same time with profiles, but I want to create the ports before the profiles. This new array will allow creating the ports separately from the profiles. --- src/modules/alsa/alsa-ucm.c | 8 ++++++++ src/modules/alsa/alsa-ucm.h | 1 + 2 files changed, 9 insertions(+) diff --git a/src/modules/alsa/alsa-ucm.c b/src/modules/alsa/alsa-ucm.c index ce10970..302c8fc 100644 --- a/src/modules/alsa/alsa-ucm.c +++ b/src/modules/alsa/alsa-ucm.c @@ -740,6 +740,7 @@ static void ucm_add_port_combination( } pa_hashmap_put(ports, port->name, port); + pa_dynarray_append(context->ports, port); pa_log_debug("Add port %s: %s", port->name, port->description); port->profiles = pa_hashmap_new(pa_idxset_string_hash_func, pa_idxset_string_compare_func); } @@ -1165,6 +1166,7 @@ static int ucm_create_mapping_direction( if (!m->ucm_context.ucm_devices) { /* new mapping */ m->ucm_context.ucm_devices = pa_idxset_new(pa_idxset_trivial_hash_func, pa_idxset_trivial_compare_func); + m->ucm_context.ports = pa_dynarray_new(NULL); m->ucm_context.ucm = ucm; m->ucm_context.direction = is_sink ? PA_DIRECTION_OUTPUT : PA_DIRECTION_INPUT; @@ -1218,6 +1220,7 @@ static int ucm_create_mapping_for_modifier( if (!m->ucm_context.ucm_devices && !m->ucm_context.ucm_modifiers) { /* new mapping */ m->ucm_context.ucm_devices = pa_idxset_new(pa_idxset_trivial_hash_func, pa_idxset_trivial_compare_func); m->ucm_context.ucm_modifiers = pa_idxset_new(pa_idxset_trivial_hash_func, pa_idxset_trivial_compare_func); + m->ucm_context.ports = pa_dynarray_new(NULL); m->ucm_context.ucm = ucm; m->ucm_context.direction = is_sink ? PA_DIRECTION_OUTPUT : PA_DIRECTION_INPUT; @@ -1597,6 +1600,11 @@ void pa_alsa_ucm_mapping_context_free(pa_alsa_ucm_mapping_context *context) { pa_alsa_ucm_modifier *mod; uint32_t idx; + pa_assert(context); + + if (context->ports) + pa_dynarray_free(context->ports); + if (context->ucm_devices) { /* clear ucm device pointer to mapping */ PA_IDXSET_FOREACH(dev, context->ucm_devices, idx) { diff --git a/src/modules/alsa/alsa-ucm.h b/src/modules/alsa/alsa-ucm.h index 2fae6c4..66b27a0 100644 --- a/src/modules/alsa/alsa-ucm.h +++ b/src/modules/alsa/alsa-ucm.h @@ -192,6 +192,7 @@ struct pa_alsa_ucm_mapping_context { pa_idxset *ucm_devices; pa_idxset *ucm_modifiers; + pa_dynarray *ports; }; #endif -- 1.8.3.1