diff --git a/src/examples/internal.c b/src/examples/internal.c index 8b8210ca1..67d39b5dc 100644 --- a/src/examples/internal.c +++ b/src/examples/internal.c @@ -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, diff --git a/src/examples/local-v4l2.c b/src/examples/local-v4l2.c index b8ce37fa6..2093a9b48 100644 --- a/src/examples/local-v4l2.c +++ b/src/examples/local-v4l2.c @@ -33,7 +33,8 @@ struct data { SDL_Window *window; SDL_Texture *texture; - struct pw_main_loop *loop; + struct pw_main_loop *main_loop; + struct pw_loop *loop; struct pw_context *context; struct pw_core *core; @@ -61,7 +62,7 @@ static void handle_events(struct data *data) while (SDL_PollEvent(&event)) { switch (event.type) { case SDL_QUIT: - pw_main_loop_quit(data->loop); + pw_main_loop_quit(data->main_loop); break; } } @@ -309,7 +310,7 @@ static int impl_node_process(void *object) struct data *d = object; int res; - if ((res = pw_loop_invoke(pw_main_loop_get_loop(d->loop), do_render, + if ((res = pw_loop_invoke(d->loop, do_render, SPA_ID_INVALID, NULL, 0, true, d)) < 0) return res; @@ -372,14 +373,16 @@ static int make_nodes(struct data *data) &props->dict, 0); + pw_loop_enter(data->loop); while (true) { if (pw_proxy_get_bound_id(data->out) != SPA_ID_INVALID && pw_proxy_get_bound_id(data->in) != SPA_ID_INVALID) break; - pw_loop_iterate(pw_main_loop_get_loop(data->loop), -1); + pw_loop_iterate(data->loop, -1); } + pw_loop_leave(data->loop); pw_properties_clear(props); @@ -405,9 +408,10 @@ int main(int argc, char *argv[]) pw_init(&argc, &argv); - data.loop = pw_main_loop_new(NULL); + data.main_loop = pw_main_loop_new(NULL); + data.loop = pw_main_loop_get_loop(data.main_loop); data.context = pw_context_new( - pw_main_loop_get_loop(data.loop), + data.loop, pw_properties_new( PW_KEY_CORE_DAEMON, "false", NULL), 0); @@ -436,13 +440,13 @@ int main(int argc, char *argv[]) make_nodes(&data); - pw_main_loop_run(data.loop); + pw_main_loop_run(data.main_loop); pw_proxy_destroy(data.link); pw_proxy_destroy(data.in); pw_proxy_destroy(data.out); pw_context_destroy(data.context); - pw_main_loop_destroy(data.loop); + pw_main_loop_destroy(data.main_loop); pw_deinit(); return 0; diff --git a/test/test-example.c b/test/test-example.c index 60d3392d0..c080168f8 100644 --- a/test/test-example.c +++ b/test/test-example.c @@ -182,7 +182,9 @@ PWTEST(daemon_test) core = pw_context_connect(ctx, NULL, 0); pwtest_ptr_notnull(core); + pw_loop_enter(loop); pw_loop_iterate(loop, -1); + pw_loop_leave(loop); pw_core_disconnect(core); pw_context_destroy(ctx); pw_loop_destroy(loop); @@ -205,7 +207,9 @@ PWTEST(daemon_test_without_daemon) pwtest_ptr_notnull(core); /* Expect this to fail because we don't have a daemon */ + pw_loop_enter(loop); pw_loop_iterate(loop, -1); + pw_loop_leave(loop); pw_core_disconnect(core); pw_context_destroy(ctx); pw_loop_destroy(loop);