mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-12-20 08:56:56 -05:00
graph: use spa_node as implementation
Always use a spa_node as the graph implementation, implementing the methods is just as easy. Plug some mem leaks in remote
This commit is contained in:
parent
6953642ed5
commit
577f86be0d
16 changed files with 167 additions and 206 deletions
|
|
@ -448,7 +448,7 @@ static void make_node(struct data *data)
|
|||
struct pw_properties *props;
|
||||
|
||||
props = pw_properties_new(
|
||||
//"pipewire.target.node", port_path,
|
||||
"pipewire.target.node", data->path,
|
||||
"pipewire.autoconnect", "1",
|
||||
NULL);
|
||||
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@
|
|||
|
||||
#include <stdio.h>
|
||||
#include <sys/mman.h>
|
||||
#include <signal.h>
|
||||
|
||||
#include <spa/type-map.h>
|
||||
#include <spa/format-utils.h>
|
||||
|
|
@ -79,8 +80,6 @@ static void make_node(struct data *data)
|
|||
"spa.factory.name", "v4l2-source", NULL);
|
||||
data->node = pw_node_factory_create_node(factory, NULL, "v4l2-source", props);
|
||||
|
||||
pw_node_register(data->node);
|
||||
|
||||
pw_remote_export(data->remote, data->node);
|
||||
}
|
||||
|
||||
|
|
@ -110,6 +109,12 @@ static const struct pw_remote_events remote_events = {
|
|||
.state_changed = on_state_changed,
|
||||
};
|
||||
|
||||
static void do_quit(void *data, int signal_number)
|
||||
{
|
||||
struct data *d = data;
|
||||
d->running = false;
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
struct data data = { 0, };
|
||||
|
|
@ -117,6 +122,9 @@ int main(int argc, char *argv[])
|
|||
pw_init(&argc, &argv);
|
||||
|
||||
data.loop = pw_loop_new(NULL);
|
||||
pw_loop_add_signal(data.loop, SIGINT, do_quit, &data);
|
||||
pw_loop_add_signal(data.loop, SIGTERM, do_quit, &data);
|
||||
|
||||
data.running = true;
|
||||
data.core = pw_core_new(data.loop, NULL);
|
||||
data.t = pw_core_get_type(data.core);
|
||||
|
|
@ -134,10 +142,14 @@ int main(int argc, char *argv[])
|
|||
|
||||
pw_loop_enter(data.loop);
|
||||
while (data.running) {
|
||||
pw_loop_iterate(data.loop, -1);
|
||||
pw_loop_iterate(data.loop, 100);
|
||||
}
|
||||
pw_loop_leave(data.loop);
|
||||
|
||||
pw_remote_destroy(data.remote);
|
||||
if (data.node)
|
||||
pw_node_destroy(data.node);
|
||||
pw_core_destroy(data.core);
|
||||
pw_loop_destroy(data.loop);
|
||||
|
||||
return 0;
|
||||
|
|
|
|||
|
|
@ -107,7 +107,7 @@ static void handle_events(struct data *data)
|
|||
while (SDL_PollEvent(&event)) {
|
||||
switch (event.type) {
|
||||
case SDL_QUIT:
|
||||
exit(0);
|
||||
data->running = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
@ -487,10 +487,13 @@ int main(int argc, char *argv[])
|
|||
|
||||
pw_loop_enter(data.loop);
|
||||
while (data.running) {
|
||||
pw_loop_iterate(data.loop, -1);
|
||||
pw_loop_iterate(data.loop, 100);
|
||||
}
|
||||
pw_loop_leave(data.loop);
|
||||
|
||||
pw_link_destroy(data.link);
|
||||
pw_node_destroy(data.node);
|
||||
pw_core_destroy(data.core);
|
||||
pw_loop_destroy(data.loop);
|
||||
|
||||
return 0;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue