From 14fbd4f52083b20103d94731246fd51d90b14a58 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Fri, 7 Feb 2020 13:30:24 +0100 Subject: [PATCH] jack: wait for transport Wait for the transport to be configured before we exit from client_open. We then have at least an activation or even a driver set. --- pipewire-jack/src/pipewire-jack.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/pipewire-jack/src/pipewire-jack.c b/pipewire-jack/src/pipewire-jack.c index 7c343a45c..f8a9d1a13 100644 --- a/pipewire-jack/src/pipewire-jack.c +++ b/pipewire-jack/src/pipewire-jack.c @@ -1143,6 +1143,7 @@ static int client_node_transport(void *object, true, on_rtsocket_condition, c); c->has_transport = true; + pw_thread_loop_signal(c->context.loop, false); return 0; } @@ -2206,8 +2207,15 @@ jack_client_t * jack_client_open (const char *client_name, PW_CLIENT_NODE_UPDATE_INFO, 0, NULL, &ni); - if (do_sync(client) < 0) - goto init_failed; + while (true) { + pw_thread_loop_wait(client->context.loop); + + if (client->error) + goto init_failed; + + if (client->has_transport) + break; + } pw_thread_loop_unlock(client->context.loop);