From abf37f618e3f2a7ed5fecf4bde72128f4ced4ea5 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Fri, 20 Aug 2021 09:26:17 +0200 Subject: [PATCH] modules: ensure node.name and description are set Most apps need this and some even crash when they are not set. --- src/modules/module-echo-cancel.c | 5 +++++ src/modules/module-example-sink.c | 7 +++++++ src/modules/module-example-source.c | 7 +++++++ src/modules/module-filter-chain.c | 6 ++++++ src/modules/module-loopback.c | 6 ++++++ 5 files changed, 31 insertions(+) diff --git a/src/modules/module-echo-cancel.c b/src/modules/module-echo-cancel.c index 5aa1bca16..b2b55b25f 100644 --- a/src/modules/module-echo-cancel.c +++ b/src/modules/module-echo-cancel.c @@ -858,6 +858,11 @@ int pipewire__module_init(struct pw_impl_module *module, const char *args) pw_properties_setf(props, PW_KEY_NODE_LINK_GROUP, "echo-cancel-%u", id); if (pw_properties_get(props, PW_KEY_NODE_VIRTUAL) == NULL) pw_properties_set(props, PW_KEY_NODE_VIRTUAL, "true"); + if (pw_properties_get(props, PW_KEY_NODE_NAME) == NULL) + pw_properties_setf(props, PW_KEY_NODE_NAME, "echo-cancel-%u", id); + if (pw_properties_get(props, PW_KEY_NODE_DESCRIPTION) == NULL) + pw_properties_set(props, PW_KEY_NODE_DESCRIPTION, + pw_properties_get(props, PW_KEY_NODE_NAME)); parse_audio_info(props, &impl->info); diff --git a/src/modules/module-example-sink.c b/src/modules/module-example-sink.c index b502c3113..af79e43a1 100644 --- a/src/modules/module-example-sink.c +++ b/src/modules/module-example-sink.c @@ -364,6 +364,7 @@ int pipewire__module_init(struct pw_impl_module *module, const char *args) { struct pw_context *context = pw_impl_module_get_context(module); struct pw_properties *props = NULL; + uint32_t id = pw_global_get_id(pw_impl_module_get_global(module)); struct impl *impl; const char *str; int res; @@ -409,6 +410,12 @@ int pipewire__module_init(struct pw_impl_module *module, const char *args) if (pw_properties_get(props, PW_KEY_MEDIA_CLASS) == NULL) pw_properties_set(props, PW_KEY_MEDIA_CLASS, "Audio/Sink"); + if (pw_properties_get(props, PW_KEY_NODE_NAME) == NULL) + pw_properties_setf(props, PW_KEY_NODE_NAME, "example-sink-%u", id); + if (pw_properties_get(props, PW_KEY_NODE_DESCRIPTION) == NULL) + pw_properties_set(props, PW_KEY_NODE_DESCRIPTION, + pw_properties_get(props, PW_KEY_NODE_NAME)); + if ((str = pw_properties_get(props, "stream.props")) != NULL) pw_properties_update_string(impl->stream_props, str, strlen(str)); diff --git a/src/modules/module-example-source.c b/src/modules/module-example-source.c index cfd6cc684..cd226bc2a 100644 --- a/src/modules/module-example-source.c +++ b/src/modules/module-example-source.c @@ -383,6 +383,7 @@ SPA_EXPORT int pipewire__module_init(struct pw_impl_module *module, const char *args) { struct pw_context *context = pw_impl_module_get_context(module); + uint32_t id = pw_global_get_id(pw_impl_module_get_global(module)); struct pw_properties *props = NULL; struct impl *impl; const char *str; @@ -429,6 +430,12 @@ int pipewire__module_init(struct pw_impl_module *module, const char *args) if (pw_properties_get(props, PW_KEY_MEDIA_CLASS) == NULL) pw_properties_set(props, PW_KEY_MEDIA_CLASS, "Audio/Source"); + if (pw_properties_get(props, PW_KEY_NODE_NAME) == NULL) + pw_properties_setf(props, PW_KEY_NODE_NAME, "example-source-%u", id); + if (pw_properties_get(props, PW_KEY_NODE_DESCRIPTION) == NULL) + pw_properties_set(props, PW_KEY_NODE_DESCRIPTION, + pw_properties_get(props, PW_KEY_NODE_NAME)); + if ((str = pw_properties_get(props, "stream.props")) != NULL) pw_properties_update_string(impl->stream_props, str, strlen(str)); diff --git a/src/modules/module-filter-chain.c b/src/modules/module-filter-chain.c index bce541aac..b74b36fda 100644 --- a/src/modules/module-filter-chain.c +++ b/src/modules/module-filter-chain.c @@ -1675,6 +1675,12 @@ int pipewire__module_init(struct pw_impl_module *module, const char *args) if (pw_properties_get(props, PW_KEY_NODE_VIRTUAL) == NULL) pw_properties_set(props, PW_KEY_NODE_VIRTUAL, "true"); + if (pw_properties_get(props, PW_KEY_NODE_NAME) == NULL) + pw_properties_setf(props, PW_KEY_NODE_NAME, "filter-chain-%u", id); + if (pw_properties_get(props, PW_KEY_NODE_DESCRIPTION) == NULL) + pw_properties_set(props, PW_KEY_NODE_DESCRIPTION, + pw_properties_get(props, PW_KEY_NODE_NAME)); + if ((str = pw_properties_get(props, "capture.props")) != NULL) pw_properties_update_string(impl->capture_props, str, strlen(str)); if ((str = pw_properties_get(props, "playback.props")) != NULL) diff --git a/src/modules/module-loopback.c b/src/modules/module-loopback.c index 434007b53..39bf88177 100644 --- a/src/modules/module-loopback.c +++ b/src/modules/module-loopback.c @@ -438,6 +438,12 @@ int pipewire__module_init(struct pw_impl_module *module, const char *args) if (pw_properties_get(props, PW_KEY_NODE_VIRTUAL) == NULL) pw_properties_set(props, PW_KEY_NODE_VIRTUAL, "true"); + if (pw_properties_get(props, PW_KEY_NODE_NAME) == NULL) + pw_properties_setf(props, PW_KEY_NODE_NAME, "loopback-%u", id); + if (pw_properties_get(props, PW_KEY_NODE_DESCRIPTION) == NULL) + pw_properties_set(props, PW_KEY_NODE_DESCRIPTION, + pw_properties_get(props, PW_KEY_NODE_NAME)); + if ((str = pw_properties_get(props, "capture.props")) != NULL) pw_properties_update_string(impl->capture_props, str, strlen(str)); if ((str = pw_properties_get(props, "playback.props")) != NULL)