From d1a0121b7c15e03bd3e9e52cb9de272b0a54955d Mon Sep 17 00:00:00 2001 From: Pauli Virtanen Date: Mon, 18 Jan 2021 13:22:58 +0200 Subject: [PATCH] policy-node: handle moving streams when target.node is removed When target.node metadata is unset, unset it also from the session node. Schedule rescan in case this affects links. --- src/examples/media-session/policy-node.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/examples/media-session/policy-node.c b/src/examples/media-session/policy-node.c index dc7180f4f..876ecdb77 100644 --- a/src/examples/media-session/policy-node.c +++ b/src/examples/media-session/policy-node.c @@ -844,6 +844,15 @@ static int metadata_property(void *object, uint32_t subject, if (dst_node && src_node) handle_move(impl, src_node, dst_node); + } else if (val == SPA_ID_INVALID && strcmp(key, "target.node") == 0) { + /* Unset target node. Schedule rescan to re-link, if needed. */ + struct node *src_node; + src_node = find_node_by_id(impl, subject); + if (src_node) { + free(src_node->obj->target_node); + src_node->obj->target_node = NULL; + sm_media_session_schedule_rescan(impl->session); + } } } return 0;