mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-10-29 05:40:27 -04:00
parent
b97dd00f26
commit
7da9c2b25d
3 changed files with 25 additions and 12 deletions
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue