From 035fb26d71ecb6f246c93e428b0f4e11d317dde4 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Wed, 15 Jul 2020 14:19:25 +0200 Subject: [PATCH] media-session: keep track of links Also keep track of links when not tracked in the endpoint link. --- src/examples/media-session/media-session.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/examples/media-session/media-session.c b/src/examples/media-session/media-session.c index c0b26266d..a328eb1ad 100644 --- a/src/examples/media-session/media-session.c +++ b/src/examples/media-session/media-session.c @@ -121,6 +121,8 @@ struct impl { struct spa_list endpoint_link_list; /** list of struct endpoint_link */ struct pw_map endpoint_links; /** map of endpoint_link */ + struct spa_list link_list; /** list of struct link */ + struct spa_list sync_list; /** list of struct sync */ int rescan_seq; int last_seq; @@ -147,7 +149,8 @@ struct link { uint32_t input_port; struct endpoint_link *endpoint_link; - struct spa_list link; /**< link in struct endpoint_link link_list */ + struct spa_list link; /**< link in struct endpoint_link link_list or + * struct impl link_list */ }; struct object_info { @@ -1406,8 +1409,9 @@ static void proxy_link_destroy(void *data) { struct link *l = data; + spa_list_remove(&l->link); + if (l->endpoint_link) { - spa_list_remove(&l->link); check_endpoint_link(l->endpoint_link); l->endpoint_link = NULL; } @@ -1467,6 +1471,8 @@ static int link_nodes(struct impl *impl, struct endpoint_link *link, if (link) { l->endpoint_link = link; spa_list_append(&link->link_list, &l->link); + } else { + spa_list_append(&impl->link_list, &l->link); } outport = spa_list_next(outport, link); @@ -1859,6 +1865,7 @@ int main(int argc, char *argv[]) pw_map_init(&impl.globals, 64, 64); spa_list_init(&impl.global_list); + spa_list_init(&impl.link_list); pw_map_init(&impl.endpoint_links, 64, 64); spa_list_init(&impl.endpoint_link_list); spa_list_init(&impl.sync_list);