From 6365ea18d921265229a6bfe661317f00b1f8ff64 Mon Sep 17 00:00:00 2001 From: David Svensson Fors Date: Thu, 1 Mar 2018 14:38:59 +0100 Subject: [PATCH] module-node-factory: remove destroyed node from node list --- src/modules/spa/module-node-factory.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/modules/spa/module-node-factory.c b/src/modules/spa/module-node-factory.c index 802fd75a4..2c76ffbd9 100644 --- a/src/modules/spa/module-node-factory.c +++ b/src/modules/spa/module-node-factory.c @@ -45,6 +45,18 @@ struct factory_data { struct node_data { struct spa_list link; struct pw_node *node; + struct spa_hook node_listener; +}; + +static void node_destroy(void *data) +{ + struct node_data *nd = data; + spa_list_remove(&nd->link); +} + +static const struct pw_node_events node_events = { + PW_VERSION_NODE_EVENTS, + .destroy = node_destroy, }; static void *create_object(void *_data, @@ -88,6 +100,8 @@ static void *create_object(void *_data, nd->node = node; spa_list_append(&data->node_list, &nd->link); + pw_node_add_listener(node, &nd->node_listener, &node_events, nd); + if (resource) pw_global_bind(pw_node_get_global(node), pw_resource_get_client(resource),