From b40397d9866c96bf3cf29472d88ebed5e3237580 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Fri, 5 Mar 2021 10:34:27 +0100 Subject: [PATCH] media-session: check metadata before using it The session manager might be configured without metadata support so check this before attempting to use the metadata. It's not really a problem because the default sink/source can only be changed with the pulseaudio API, which activates metadata. --- src/examples/media-session/default-nodes.c | 19 ++++++++++++------- src/examples/media-session/restore-stream.c | 3 ++- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/src/examples/media-session/default-nodes.c b/src/examples/media-session/default-nodes.c index 769bc5a5f..87f9f40b8 100644 --- a/src/examples/media-session/default-nodes.c +++ b/src/examples/media-session/default-nodes.c @@ -227,12 +227,14 @@ static void session_create(void *data, struct sm_object *object) if (def->key == NULL) continue; - char val[16]; - snprintf(val, sizeof(val), "%u", d.id); - pw_log_info("found %s with id:%s restore as %s", - name, val, item->key); - pw_metadata_set_property(impl->session->metadata, - PW_ID_CORE, item->key, SPA_TYPE_INFO_BASE"Id", val); + if (impl->session->metadata != NULL) { + char val[16]; + snprintf(val, sizeof(val), "%u", d.id); + pw_log_info("found %s with id:%s restore as %s", + name, val, item->key); + pw_metadata_set_property(impl->session->metadata, + PW_ID_CORE, item->key, SPA_TYPE_INFO_BASE"Id", val); + } } } } @@ -248,7 +250,10 @@ static void session_remove(void *data, struct sm_object *object) for (def = impl->defaults; def->key != NULL; ++def) { if (def->value == object->id) { def->value = SPA_ID_INVALID; - pw_metadata_set_property(impl->session->metadata, PW_ID_CORE, def->key, NULL, NULL); + if (impl->session->metadata != NULL) { + pw_metadata_set_property(impl->session->metadata, + PW_ID_CORE, def->key, NULL, NULL); + } } } } diff --git a/src/examples/media-session/restore-stream.c b/src/examples/media-session/restore-stream.c index 47e23deec..d0b23fc58 100644 --- a/src/examples/media-session/restore-stream.c +++ b/src/examples/media-session/restore-stream.c @@ -217,7 +217,8 @@ static void sync_metadata(struct impl *impl) impl->sync = true; spa_dict_for_each(it, &impl->props->dict) - pw_metadata_set_property(impl->metadata, 0, it->key, "Spa:String:JSON", it->value); + pw_metadata_set_property(impl->metadata, + PW_ID_CORE, it->key, "Spa:String:JSON", it->value); impl->sync = false; }