mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-10-31 22:25:38 -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[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
struct data data = { 0, };
|
struct data data = { 0, };
|
||||||
|
struct pw_loop *loop;
|
||||||
struct pw_properties *props;
|
struct pw_properties *props;
|
||||||
const char *dev = "hw:0";
|
const char *dev = "hw:0";
|
||||||
|
|
||||||
|
|
@ -47,13 +48,15 @@ int main(int argc, char *argv[])
|
||||||
|
|
||||||
data.loop = pw_main_loop_new(NULL);
|
data.loop = pw_main_loop_new(NULL);
|
||||||
|
|
||||||
|
loop = pw_main_loop_get_loop(data.loop);
|
||||||
|
|
||||||
if (argc > 1)
|
if (argc > 1)
|
||||||
dev = argv[1];
|
dev = argv[1];
|
||||||
|
|
||||||
pw_loop_add_signal(pw_main_loop_get_loop(data.loop), SIGINT, do_quit, &data);
|
pw_loop_add_signal(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, 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-spa-node-factory", NULL, NULL);
|
||||||
pw_context_load_module(data.context, "libpipewire-module-link-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,
|
PW_VERSION_NODE,
|
||||||
&props->dict, 0);
|
&props->dict, 0);
|
||||||
|
|
||||||
|
pw_loop_enter(loop);
|
||||||
while (true) {
|
while (true) {
|
||||||
if (pw_proxy_get_bound_id(data.source) != SPA_ID_INVALID &&
|
if (pw_proxy_get_bound_id(data.source) != SPA_ID_INVALID &&
|
||||||
pw_proxy_get_bound_id(data.sink) != SPA_ID_INVALID)
|
pw_proxy_get_bound_id(data.sink) != SPA_ID_INVALID)
|
||||||
break;
|
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_clear(props);
|
||||||
pw_properties_setf(props,
|
pw_properties_setf(props,
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,8 @@ struct data {
|
||||||
SDL_Window *window;
|
SDL_Window *window;
|
||||||
SDL_Texture *texture;
|
SDL_Texture *texture;
|
||||||
|
|
||||||
struct pw_main_loop *loop;
|
struct pw_main_loop *main_loop;
|
||||||
|
struct pw_loop *loop;
|
||||||
|
|
||||||
struct pw_context *context;
|
struct pw_context *context;
|
||||||
struct pw_core *core;
|
struct pw_core *core;
|
||||||
|
|
@ -61,7 +62,7 @@ static void handle_events(struct data *data)
|
||||||
while (SDL_PollEvent(&event)) {
|
while (SDL_PollEvent(&event)) {
|
||||||
switch (event.type) {
|
switch (event.type) {
|
||||||
case SDL_QUIT:
|
case SDL_QUIT:
|
||||||
pw_main_loop_quit(data->loop);
|
pw_main_loop_quit(data->main_loop);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -309,7 +310,7 @@ static int impl_node_process(void *object)
|
||||||
struct data *d = object;
|
struct data *d = object;
|
||||||
int res;
|
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)
|
SPA_ID_INVALID, NULL, 0, true, d)) < 0)
|
||||||
return res;
|
return res;
|
||||||
|
|
||||||
|
|
@ -372,14 +373,16 @@ static int make_nodes(struct data *data)
|
||||||
&props->dict, 0);
|
&props->dict, 0);
|
||||||
|
|
||||||
|
|
||||||
|
pw_loop_enter(data->loop);
|
||||||
while (true) {
|
while (true) {
|
||||||
|
|
||||||
if (pw_proxy_get_bound_id(data->out) != SPA_ID_INVALID &&
|
if (pw_proxy_get_bound_id(data->out) != SPA_ID_INVALID &&
|
||||||
pw_proxy_get_bound_id(data->in) != SPA_ID_INVALID)
|
pw_proxy_get_bound_id(data->in) != SPA_ID_INVALID)
|
||||||
break;
|
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);
|
pw_properties_clear(props);
|
||||||
|
|
||||||
|
|
@ -405,9 +408,10 @@ int main(int argc, char *argv[])
|
||||||
|
|
||||||
pw_init(&argc, &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(
|
data.context = pw_context_new(
|
||||||
pw_main_loop_get_loop(data.loop),
|
data.loop,
|
||||||
pw_properties_new(
|
pw_properties_new(
|
||||||
PW_KEY_CORE_DAEMON, "false",
|
PW_KEY_CORE_DAEMON, "false",
|
||||||
NULL), 0);
|
NULL), 0);
|
||||||
|
|
@ -436,13 +440,13 @@ int main(int argc, char *argv[])
|
||||||
|
|
||||||
make_nodes(&data);
|
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.link);
|
||||||
pw_proxy_destroy(data.in);
|
pw_proxy_destroy(data.in);
|
||||||
pw_proxy_destroy(data.out);
|
pw_proxy_destroy(data.out);
|
||||||
pw_context_destroy(data.context);
|
pw_context_destroy(data.context);
|
||||||
pw_main_loop_destroy(data.loop);
|
pw_main_loop_destroy(data.main_loop);
|
||||||
pw_deinit();
|
pw_deinit();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
||||||
|
|
@ -182,7 +182,9 @@ PWTEST(daemon_test)
|
||||||
core = pw_context_connect(ctx, NULL, 0);
|
core = pw_context_connect(ctx, NULL, 0);
|
||||||
pwtest_ptr_notnull(core);
|
pwtest_ptr_notnull(core);
|
||||||
|
|
||||||
|
pw_loop_enter(loop);
|
||||||
pw_loop_iterate(loop, -1);
|
pw_loop_iterate(loop, -1);
|
||||||
|
pw_loop_leave(loop);
|
||||||
pw_core_disconnect(core);
|
pw_core_disconnect(core);
|
||||||
pw_context_destroy(ctx);
|
pw_context_destroy(ctx);
|
||||||
pw_loop_destroy(loop);
|
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 */
|
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_iterate(loop, -1);
|
||||||
|
pw_loop_leave(loop);
|
||||||
pw_core_disconnect(core);
|
pw_core_disconnect(core);
|
||||||
pw_context_destroy(ctx);
|
pw_context_destroy(ctx);
|
||||||
pw_loop_destroy(loop);
|
pw_loop_destroy(loop);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue