From c20100eabb0def32ace46b199de104dee76a885f Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Thu, 2 Apr 2020 15:26:39 +0200 Subject: [PATCH] media-session: Add method to destroy a global Destroy the stream when it is disconnected and it was marked as DONT_RECONNECT. --- src/examples/media-session/media-session.c | 7 +++++++ src/examples/media-session/media-session.h | 1 + src/examples/media-session/policy-node.c | 2 +- 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/examples/media-session/media-session.c b/src/examples/media-session/media-session.c index b9624e05f..d88a6d60c 100644 --- a/src/examples/media-session/media-session.c +++ b/src/examples/media-session/media-session.c @@ -1182,6 +1182,13 @@ struct sm_object *sm_media_session_find_object(struct sm_media_session *sess, ui return find_object(impl, id); } +int sm_media_session_destroy_object(struct sm_media_session *sess, uint32_t id) +{ + struct impl *impl = SPA_CONTAINER_OF(sess, struct impl, this); + pw_registry_destroy(impl->registry, id); + return 0; +} + int sm_media_session_schedule_rescan(struct sm_media_session *sess) { struct impl *impl = SPA_CONTAINER_OF(sess, struct impl, this); diff --git a/src/examples/media-session/media-session.h b/src/examples/media-session/media-session.h index 5e639a578..fc3b9aef7 100644 --- a/src/examples/media-session/media-session.h +++ b/src/examples/media-session/media-session.h @@ -248,6 +248,7 @@ int sm_media_session_sync(struct sm_media_session *sess, void (*callback) (void *data), void *data); struct sm_object *sm_media_session_find_object(struct sm_media_session *sess, uint32_t id); +int sm_media_session_destroy_object(struct sm_media_session *sess, uint32_t id); int sm_media_session_schedule_rescan(struct sm_media_session *sess); diff --git a/src/examples/media-session/policy-node.c b/src/examples/media-session/policy-node.c index 76f2d8be4..28a3c9a4a 100644 --- a/src/examples/media-session/policy-node.c +++ b/src/examples/media-session/policy-node.c @@ -487,7 +487,7 @@ static int rescan_node(struct impl *impl, struct node *n) str = spa_dict_lookup(props, PW_KEY_NODE_DONT_RECONNECT); if (str != NULL && pw_properties_parse_bool(str)) { -// pw_registry_destroy(impl->registry, n->id); + sm_media_session_destroy_object(impl->session, n->id); } obj = sm_media_session_find_object(impl->session, n->client_id);