From 181ca167e7ea22ad53d507cbbeb34a3482116ecf Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Fri, 8 May 2020 16:18:38 +0200 Subject: [PATCH] media-session: make sure to only remove hooks once --- src/examples/media-session/media-session.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/examples/media-session/media-session.c b/src/examples/media-session/media-session.c index 546d90d36..f27fc849d 100644 --- a/src/examples/media-session/media-session.c +++ b/src/examples/media-session/media-session.c @@ -918,9 +918,10 @@ destroy_proxy(void *data) pw_log_debug("object %p: proxy:%p id:%d", obj, obj->proxy, obj->id); - spa_hook_remove(&obj->proxy_listener); - if (SPA_FLAG_IS_SET(obj->mask, SM_OBJECT_CHANGE_MASK_LISTENER)) + if (SPA_FLAG_IS_SET(obj->mask, SM_OBJECT_CHANGE_MASK_LISTENER)) { + SPA_FLAG_CLEAR(obj->mask, SM_OBJECT_CHANGE_MASK_LISTENER); spa_hook_remove(&obj->object_listener); + } if (obj->id != SPA_ID_INVALID) remove_object(impl, obj); @@ -930,6 +931,14 @@ destroy_proxy(void *data) if (obj->destroy) obj->destroy(obj); + if (obj->proxy) { + spa_hook_remove(&obj->proxy_listener); + obj->proxy = NULL; + } + if (obj->handle) { + spa_hook_remove(&obj->handle_listener); + obj->handle = NULL; + } if (obj->props) pw_properties_free(obj->props); obj->props = NULL;