From 30419c37dfddac0e9077a27a845dfd2ac3aa3585 Mon Sep 17 00:00:00 2001 From: Demi Marie Obenour Date: Tue, 16 Jan 2024 13:25:39 -0500 Subject: [PATCH] Ensure all globals have PW_KEY_OBJECT_SERIAL prop This avoids the caller having to set this property. --- src/modules/module-profiler.c | 6 ------ .../client-endpoint/endpoint.c | 1 - .../module-session-manager/client-session/session.c | 1 - src/modules/module-session-manager/endpoint-link.c | 13 ------------- .../module-session-manager/endpoint-stream.c | 13 ------------- src/modules/module-session-manager/endpoint.c | 13 ------------- src/modules/module-session-manager/session.c | 13 ------------- src/pipewire/global.c | 9 +++++++++ src/pipewire/impl-client.c | 1 - src/pipewire/impl-core.c | 1 - src/pipewire/impl-device.c | 1 - src/pipewire/impl-factory.c | 1 - src/pipewire/impl-link.c | 1 - src/pipewire/impl-metadata.c | 1 - src/pipewire/impl-module.c | 1 - src/pipewire/impl-node.c | 1 - src/pipewire/impl-port.c | 1 - 17 files changed, 9 insertions(+), 69 deletions(-) diff --git a/src/modules/module-profiler.c b/src/modules/module-profiler.c index 04ba26775..c5a9e2602 100644 --- a/src/modules/module-profiler.c +++ b/src/modules/module-profiler.c @@ -441,10 +441,6 @@ 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; struct impl *impl; - static const char * const keys[] = { - PW_KEY_OBJECT_SERIAL, - NULL - }; PW_LOG_TOPIC_INIT(mod_topic); @@ -483,8 +479,6 @@ int pipewire__module_init(struct pw_impl_module *module, const char *args) impl->flush_event = pw_loop_add_event(impl->main_loop, do_flush_event, impl); - pw_global_update_keys(impl->global, &impl->properties->dict, keys); - pw_impl_module_add_listener(module, &impl->module_listener, &module_events, impl); pw_impl_module_update_properties(module, &SPA_DICT_INIT_ARRAY(module_props)); diff --git a/src/modules/module-session-manager/client-endpoint/endpoint.c b/src/modules/module-session-manager/client-endpoint/endpoint.c index 2b12dafa2..224e1c93c 100644 --- a/src/modules/module-session-manager/client-endpoint/endpoint.c +++ b/src/modules/module-session-manager/client-endpoint/endpoint.c @@ -299,7 +299,6 @@ int endpoint_init(struct endpoint *this, struct pw_properties *properties) { static const char * const keys[] = { - PW_KEY_OBJECT_SERIAL, PW_KEY_FACTORY_ID, PW_KEY_CLIENT_ID, PW_KEY_DEVICE_ID, diff --git a/src/modules/module-session-manager/client-session/session.c b/src/modules/module-session-manager/client-session/session.c index 4ace480d3..02c13230b 100644 --- a/src/modules/module-session-manager/client-session/session.c +++ b/src/modules/module-session-manager/client-session/session.c @@ -269,7 +269,6 @@ int session_init(struct session *this, struct pw_properties *properties) { static const char * const keys[] = { - PW_KEY_OBJECT_SERIAL, PW_KEY_FACTORY_ID, PW_KEY_CLIENT_ID, NULL diff --git a/src/modules/module-session-manager/endpoint-link.c b/src/modules/module-session-manager/endpoint-link.c index 5804173b4..964c5d140 100644 --- a/src/modules/module-session-manager/endpoint-link.c +++ b/src/modules/module-session-manager/endpoint-link.c @@ -371,15 +371,6 @@ static void *link_new(struct pw_context *context, struct pw_properties *properties) { struct impl *impl; - char serial_str[32]; - struct spa_dict_item items[1] = { - SPA_DICT_ITEM_INIT(PW_KEY_OBJECT_SERIAL, serial_str), - }; - struct spa_dict extra_props = SPA_DICT_INIT_ARRAY(items); - static const char * const keys[] = { - PW_KEY_OBJECT_SERIAL, - NULL - }; impl = calloc(1, sizeof(*impl)); if (impl == NULL) { @@ -399,10 +390,6 @@ static void *link_new(struct pw_context *context, } impl->resource = resource; - spa_scnprintf(serial_str, sizeof(serial_str), "%"PRIu64, - pw_global_get_serial(impl->global)); - pw_global_update_keys(impl->global, &extra_props, keys); - spa_list_init(&impl->cached_params); /* handle destroy events */ diff --git a/src/modules/module-session-manager/endpoint-stream.c b/src/modules/module-session-manager/endpoint-stream.c index 40c048ac1..c93db3767 100644 --- a/src/modules/module-session-manager/endpoint-stream.c +++ b/src/modules/module-session-manager/endpoint-stream.c @@ -362,15 +362,6 @@ static void *stream_new(struct pw_context *context, struct pw_properties *properties) { struct impl *impl; - char serial_str[32]; - struct spa_dict_item items[1] = { - SPA_DICT_ITEM_INIT(PW_KEY_OBJECT_SERIAL, serial_str), - }; - struct spa_dict extra_props = SPA_DICT_INIT_ARRAY(items); - static const char * const keys[] = { - PW_KEY_OBJECT_SERIAL, - NULL - }; impl = calloc(1, sizeof(*impl)); if (impl == NULL) { @@ -390,10 +381,6 @@ static void *stream_new(struct pw_context *context, } impl->resource = resource; - spa_scnprintf(serial_str, sizeof(serial_str), "%"PRIu64, - pw_global_get_serial(impl->global)); - pw_global_update_keys(impl->global, &extra_props, keys); - spa_list_init(&impl->cached_params); /* handle destroy events */ diff --git a/src/modules/module-session-manager/endpoint.c b/src/modules/module-session-manager/endpoint.c index a55aad78e..32aa1b16b 100644 --- a/src/modules/module-session-manager/endpoint.c +++ b/src/modules/module-session-manager/endpoint.c @@ -371,15 +371,6 @@ static void *endpoint_new(struct pw_context *context, struct pw_properties *properties) { struct impl *impl; - char serial_str[32]; - struct spa_dict_item items[1] = { - SPA_DICT_ITEM_INIT(PW_KEY_OBJECT_SERIAL, serial_str), - }; - struct spa_dict extra_props = SPA_DICT_INIT_ARRAY(items); - static const char * const keys[] = { - PW_KEY_OBJECT_SERIAL, - NULL - }; impl = calloc(1, sizeof(*impl)); if (impl == NULL) { @@ -399,10 +390,6 @@ static void *endpoint_new(struct pw_context *context, } impl->resource = resource; - spa_scnprintf(serial_str, sizeof(serial_str), "%"PRIu64, - pw_global_get_serial(impl->global)); - pw_global_update_keys(impl->global, &extra_props, keys); - spa_list_init(&impl->cached_params); /* handle destroy events */ diff --git a/src/modules/module-session-manager/session.c b/src/modules/module-session-manager/session.c index 84d33bfef..de1fb4360 100644 --- a/src/modules/module-session-manager/session.c +++ b/src/modules/module-session-manager/session.c @@ -360,15 +360,6 @@ static void *session_new(struct pw_context *context, struct pw_properties *properties) { struct impl *impl; - char serial_str[32]; - struct spa_dict_item items[1] = { - SPA_DICT_ITEM_INIT(PW_KEY_OBJECT_SERIAL, serial_str), - }; - struct spa_dict extra_props = SPA_DICT_INIT_ARRAY(items); - static const char * const keys[] = { - PW_KEY_OBJECT_SERIAL, - NULL - }; impl = calloc(1, sizeof(*impl)); if (impl == NULL) { @@ -388,10 +379,6 @@ static void *session_new(struct pw_context *context, } impl->resource = resource; - spa_scnprintf(serial_str, sizeof(serial_str), "%"PRIu64, - pw_global_get_serial(impl->global)); - pw_global_update_keys(impl->global, &extra_props, keys); - spa_list_init(&impl->cached_params); /* handle destroy events */ diff --git a/src/pipewire/global.c b/src/pipewire/global.c index 9aff3210c..b23e61f37 100644 --- a/src/pipewire/global.c +++ b/src/pipewire/global.c @@ -54,6 +54,7 @@ pw_global_new(struct pw_context *context, { struct impl *impl; struct pw_global *this; + uint64_t serial; int res; if (properties == NULL) @@ -87,6 +88,14 @@ pw_global_new(struct pw_context *context, spa_list_init(&this->resource_list); spa_hook_list_init(&this->listener_list); + serial = pw_global_get_serial(this); + res = pw_properties_setf(properties, PW_KEY_OBJECT_SERIAL, "%" PRIu64, serial); + if (res < 0) { + pw_global_destroy(this); + errno = -res; + return NULL; + } + pw_log_debug("%p: new %s %d", this, this->type, this->id); return this; diff --git a/src/pipewire/impl-client.c b/src/pipewire/impl-client.c index 69f9ac7eb..1a95413c9 100644 --- a/src/pipewire/impl-client.c +++ b/src/pipewire/impl-client.c @@ -519,7 +519,6 @@ int pw_impl_client_register(struct pw_impl_client *client, struct pw_properties *properties) { static const char * const keys[] = { - PW_KEY_OBJECT_SERIAL, PW_KEY_MODULE_ID, PW_KEY_PROTOCOL, PW_KEY_SEC_PID, diff --git a/src/pipewire/impl-core.c b/src/pipewire/impl-core.c index cd20051ca..1901b4b52 100644 --- a/src/pipewire/impl-core.c +++ b/src/pipewire/impl-core.c @@ -573,7 +573,6 @@ int pw_impl_core_register(struct pw_impl_core *core, struct pw_properties *properties) { static const char * const keys[] = { - PW_KEY_OBJECT_SERIAL, PW_KEY_USER_NAME, PW_KEY_HOST_NAME, PW_KEY_CORE_NAME, diff --git a/src/pipewire/impl-device.c b/src/pipewire/impl-device.c index af85b6a28..09b601dc6 100644 --- a/src/pipewire/impl-device.c +++ b/src/pipewire/impl-device.c @@ -538,7 +538,6 @@ int pw_impl_device_register(struct pw_impl_device *device, struct pw_properties *properties) { static const char * const keys[] = { - PW_KEY_OBJECT_SERIAL, PW_KEY_OBJECT_PATH, PW_KEY_MODULE_ID, PW_KEY_FACTORY_ID, diff --git a/src/pipewire/impl-factory.c b/src/pipewire/impl-factory.c index 82ad79d8c..8863ef2e3 100644 --- a/src/pipewire/impl-factory.c +++ b/src/pipewire/impl-factory.c @@ -158,7 +158,6 @@ int pw_impl_factory_register(struct pw_impl_factory *factory, struct pw_properties *properties) { static const char * const keys[] = { - PW_KEY_OBJECT_SERIAL, PW_KEY_MODULE_ID, PW_KEY_FACTORY_NAME, PW_KEY_FACTORY_TYPE_NAME, diff --git a/src/pipewire/impl-link.c b/src/pipewire/impl-link.c index b8224753d..081e9e1d7 100644 --- a/src/pipewire/impl-link.c +++ b/src/pipewire/impl-link.c @@ -1496,7 +1496,6 @@ int pw_impl_link_register(struct pw_impl_link *link, struct pw_properties *properties) { static const char * const keys[] = { - PW_KEY_OBJECT_SERIAL, PW_KEY_OBJECT_PATH, PW_KEY_MODULE_ID, PW_KEY_FACTORY_ID, diff --git a/src/pipewire/impl-metadata.c b/src/pipewire/impl-metadata.c index 49d0e6c04..b863fe5e4 100644 --- a/src/pipewire/impl-metadata.c +++ b/src/pipewire/impl-metadata.c @@ -506,7 +506,6 @@ int pw_impl_metadata_register(struct pw_impl_metadata *metadata, { struct pw_context *context = metadata->context; static const char * const keys[] = { - PW_KEY_OBJECT_SERIAL, PW_KEY_MODULE_ID, PW_KEY_FACTORY_ID, PW_KEY_METADATA_NAME, diff --git a/src/pipewire/impl-module.c b/src/pipewire/impl-module.c index 561f05c72..644bae92c 100644 --- a/src/pipewire/impl-module.c +++ b/src/pipewire/impl-module.c @@ -149,7 +149,6 @@ pw_context_load_module(struct pw_context *context, size_t len; char path_part[PATH_MAX]; static const char * const keys[] = { - PW_KEY_OBJECT_SERIAL, PW_KEY_MODULE_NAME, NULL }; diff --git a/src/pipewire/impl-node.c b/src/pipewire/impl-node.c index 33e5aa75e..dbb7b21ec 100644 --- a/src/pipewire/impl-node.c +++ b/src/pipewire/impl-node.c @@ -739,7 +739,6 @@ int pw_impl_node_register(struct pw_impl_node *this, struct pw_properties *properties) { static const char * const keys[] = { - PW_KEY_OBJECT_SERIAL, PW_KEY_OBJECT_PATH, PW_KEY_MODULE_ID, PW_KEY_FACTORY_ID, diff --git a/src/pipewire/impl-port.c b/src/pipewire/impl-port.c index 1359f3c82..9018398cd 100644 --- a/src/pipewire/impl-port.c +++ b/src/pipewire/impl-port.c @@ -1014,7 +1014,6 @@ int pw_impl_port_register(struct pw_impl_port *port, struct pw_properties *properties) { static const char * const keys[] = { - PW_KEY_OBJECT_SERIAL, PW_KEY_OBJECT_PATH, PW_KEY_FORMAT_DSP, PW_KEY_NODE_ID,