From c41c812325ca1b0db1efc2fc06a3c90355be59d9 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Thu, 24 Aug 2023 19:28:57 +0200 Subject: [PATCH] jack: make sure we can always find our own ports find_port_by_name() is used to find our own ports before they become visible so make sure we can always find them. Fixes #3485 --- pipewire-jack/src/pipewire-jack.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/pipewire-jack/src/pipewire-jack.c b/pipewire-jack/src/pipewire-jack.c index b93422bd3..ff5b6881d 100644 --- a/pipewire-jack/src/pipewire-jack.c +++ b/pipewire-jack/src/pipewire-jack.c @@ -719,12 +719,20 @@ static bool is_port_default(struct client *c, struct object *o) return false; } +static inline bool client_port_visible(struct client *c, struct object *o) +{ + if (o->port.port != NULL && o->port.port->client == c) + return true; + return o->visible; +} + static struct object *find_port_by_name(struct client *c, const char *name) { struct object *o; spa_list_for_each(o, &c->context.objects, link) { - if (o->type != INTERFACE_Port || o->removed || !o->visible) + if (o->type != INTERFACE_Port || o->removed || + (!client_port_visible(c, o))) continue; if (spa_streq(o->port.name, name) || spa_streq(o->port.alias1, name) ||