media-session: don't emit metadata remove in shutdown

When in shutdown we destroy all objects but don't remove all
the metadata associated with them, like route settings.
This commit is contained in:
Wim Taymans 2020-12-01 12:03:28 +01:00
parent 19a67a2da5
commit 19dc150643
3 changed files with 13 additions and 1 deletions

View file

@ -94,6 +94,8 @@ struct metadata {
struct sm_media_session *session;
struct spa_hook session_listener;
struct pw_proxy *proxy;
unsigned int shutdown:1;
};
static void emit_properties(struct metadata *this)
@ -159,7 +161,7 @@ static int clear_subjects(struct metadata *this, uint32_t subject)
pw_array_remove(&this->metadata, item);
removed++;
}
if (removed > 0)
if (removed > 0 && !this->shutdown)
pw_metadata_emit_property(&this->hooks, subject, NULL, NULL, NULL);
return 0;
}
@ -240,6 +242,12 @@ static void session_remove(void *data, struct sm_object *object)
clear_subjects(this, object->id);
}
static void session_shutdown(void *data)
{
struct metadata *this = data;
this->shutdown = true;
}
static void session_destroy(void *data)
{
struct metadata *this = data;
@ -254,6 +262,7 @@ static void session_destroy(void *data)
static const struct sm_media_session_events session_events = {
SM_VERSION_MEDIA_SESSION_EVENTS,
.shutdown = session_shutdown,
.destroy = session_destroy,
.remove = session_remove,
};