examples: surround loop_iterate() with enter() and leave()

See #4476
This commit is contained in:
Wim Taymans 2025-01-20 12:00:02 +01:00
parent b97dd00f26
commit 7da9c2b25d
3 changed files with 25 additions and 12 deletions

View file

@ -40,6 +40,7 @@ static void do_quit(void *userdata, int signal_number)
int main(int argc, char *argv[])
{
struct data data = { 0, };
struct pw_loop *loop;
struct pw_properties *props;
const char *dev = "hw:0";
@ -47,13 +48,15 @@ int main(int argc, char *argv[])
data.loop = pw_main_loop_new(NULL);
loop = pw_main_loop_get_loop(data.loop);
if (argc > 1)
dev = argv[1];
pw_loop_add_signal(pw_main_loop_get_loop(data.loop), SIGINT, do_quit, &data);
pw_loop_add_signal(pw_main_loop_get_loop(data.loop), SIGTERM, do_quit, &data);
pw_loop_add_signal(loop, SIGINT, do_quit, &data);
pw_loop_add_signal(loop, SIGTERM, do_quit, &data);
data.context = pw_context_new(pw_main_loop_get_loop(data.loop), NULL, 0);
data.context = pw_context_new(loop, NULL, 0);
pw_context_load_module(data.context, "libpipewire-module-spa-node-factory", NULL, NULL);
pw_context_load_module(data.context, "libpipewire-module-link-factory", NULL, NULL);
@ -91,13 +94,15 @@ int main(int argc, char *argv[])
PW_VERSION_NODE,
&props->dict, 0);
pw_loop_enter(loop);
while (true) {
if (pw_proxy_get_bound_id(data.source) != SPA_ID_INVALID &&
pw_proxy_get_bound_id(data.sink) != SPA_ID_INVALID)
break;
pw_loop_iterate(pw_main_loop_get_loop(data.loop), -1);
pw_loop_iterate(loop, -1);
}
pw_loop_leave(loop);
pw_properties_clear(props);
pw_properties_setf(props,