From ee2c1f388235d7c4ab522a7234f45d955562a0f2 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Mon, 20 Jul 2020 16:27:26 +0200 Subject: [PATCH] jack: enforce unique port names as well --- pipewire-jack/src/pipewire-jack.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/pipewire-jack/src/pipewire-jack.c b/pipewire-jack/src/pipewire-jack.c index f86ef0995..59878c4a9 100644 --- a/pipewire-jack/src/pipewire-jack.c +++ b/pipewire-jack/src/pipewire-jack.c @@ -1972,7 +1972,7 @@ static void registry_event_global(void *data, uint32_t id, const struct spa_dict *props) { struct client *c = (struct client *) data; - struct object *o, *ot; + struct object *o, *ot, *op; const char *str; uint32_t object_type; size_t size; @@ -1994,9 +1994,9 @@ static void registry_event_global(void *data, uint32_t id, } snprintf(o->node.name, sizeof(o->node.name), "%s", str); ot = find_node(c, o->node.name); - if (ot != NULL && o->node.client_id != ot->node.client_id) { + if (ot != NULL && o->node.client_id != ot->node.client_id) snprintf(o->node.name, sizeof(o->node.name), "%s-%d", str, id); - } + if ((str = spa_dict_lookup(props, PW_KEY_NODE_NAME)) == NULL) str = o->node.name; snprintf(o->node.key, sizeof(o->node.key), "%s", str); @@ -2099,6 +2099,10 @@ static void registry_event_global(void *data, uint32_t id, o->port.playback_latency.min = 1024; o->port.playback_latency.max = 1024; } + op = find_port(c, o->port.name); + if (op != NULL && op != o) + snprintf(o->port.name, sizeof(o->port.name), "%.*s-%d", + (int)(sizeof(op->port.name)-11), op->port.name, id); pw_log_debug(NAME" %p: add port %d %s %d", c, id, o->port.name, type_id); }