From b1293d9f6e0c43ff0585a2b7f2b19bc9719ccb92 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Wed, 15 Jul 2020 14:22:56 +0200 Subject: [PATCH] policy-node: only track stream peers Only track the peer of streams. We only care about where we linked this stream to. There is only one target per stream but the device we link to can have many peer streams. --- src/examples/media-session/policy-node.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/examples/media-session/policy-node.c b/src/examples/media-session/policy-node.c index 1beab2cea..db8c5e130 100644 --- a/src/examples/media-session/policy-node.c +++ b/src/examples/media-session/policy-node.c @@ -282,7 +282,7 @@ static void destroy_node(struct impl *impl, struct node *node) if (node->enabled) spa_hook_remove(&node->listener); free(node->media); - if (node->peer) + if (node->peer && node->peer->peer == node) node->peer->peer = NULL; sm_object_remove_data((struct sm_object*)node->obj, SESSION_KEY); } @@ -392,7 +392,6 @@ static int link_nodes(struct node *node, struct node *peer) pw_log_debug(NAME " %p: link nodes %d %d", impl, node->id, peer->id); - peer->peer = node; node->peer = peer; if (node->direction == PW_DIRECTION_INPUT) { @@ -400,6 +399,7 @@ static int link_nodes(struct node *node, struct node *peer) node = peer; peer = t; } + props = pw_properties_new(NULL, NULL); pw_properties_setf(props, PW_KEY_LINK_OUTPUT_NODE, "%d", node->id); pw_properties_setf(props, PW_KEY_LINK_INPUT_NODE, "%d", peer->id);