From 469dff0153dd430ce9d2dedacd137796d2352a8d Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Wed, 5 Aug 2020 12:55:33 +0200 Subject: [PATCH] use global_update_keys First set the properties in the object itself and then copy them over to the global. This ensure that the global properties are also in the object and makes code a bit cleaner. It also make it possible to use the global id to make the property values unique, if we want to later . --- .../client-endpoint/endpoint.c | 10 +++------- .../client-session/session.c | 10 +++------- src/pipewire/impl-client.c | 9 ++------- src/pipewire/impl-core.c | 11 +++-------- src/pipewire/impl-device.c | 9 ++------- src/pipewire/impl-factory.c | 19 ++++++++----------- src/pipewire/impl-link.c | 16 ++++++---------- src/pipewire/impl-node.c | 9 ++------- src/pipewire/impl-port.c | 11 +++-------- 9 files changed, 32 insertions(+), 72 deletions(-) diff --git a/src/modules/module-session-manager/client-endpoint/endpoint.c b/src/modules/module-session-manager/client-endpoint/endpoint.c index 8bb1a160f..fe22fbd30 100644 --- a/src/modules/module-session-manager/client-endpoint/endpoint.c +++ b/src/modules/module-session-manager/client-endpoint/endpoint.c @@ -324,16 +324,10 @@ int endpoint_init(struct endpoint *this, this->client_ep = client_ep; this->props = properties; - properties = pw_properties_new(NULL, NULL); - if (!properties) - goto no_mem; - - pw_properties_update_keys(properties, &this->props->dict, keys); - this->global = pw_global_new (context, PW_TYPE_INTERFACE_Endpoint, PW_VERSION_ENDPOINT, - properties, endpoint_bind, this); + NULL, endpoint_bind, this); if (!this->global) goto no_mem; @@ -344,6 +338,8 @@ int endpoint_init(struct endpoint *this, this->info.id = pw_global_get_id(this->global); this->info.props = &this->props->dict; + pw_global_update_keys(this->global, &this->props->dict, keys); + pw_resource_set_bound_id(client_ep->resource, this->info.id); return pw_global_register(this->global); diff --git a/src/modules/module-session-manager/client-session/session.c b/src/modules/module-session-manager/client-session/session.c index 30ca26346..4792531ff 100644 --- a/src/modules/module-session-manager/client-session/session.c +++ b/src/modules/module-session-manager/client-session/session.c @@ -286,16 +286,10 @@ int session_init(struct session *this, this->client_sess = client_sess; this->props = properties; - properties = pw_properties_new(NULL, NULL); - if (!properties) - goto no_mem; - - pw_properties_update_keys(properties, &this->props->dict, keys); - this->global = pw_global_new (context, PW_TYPE_INTERFACE_Session, PW_VERSION_SESSION, - properties, session_bind, this); + NULL, session_bind, this); if (!this->global) goto no_mem; @@ -306,6 +300,8 @@ int session_init(struct session *this, this->info.id = pw_global_get_id(this->global); this->info.props = &this->props->dict; + pw_global_update_keys(this->global, &this->props->dict, keys); + pw_resource_set_bound_id(client_sess->resource, this->info.id); return pw_global_register(this->global); diff --git a/src/pipewire/impl-client.c b/src/pipewire/impl-client.c index 8fae0c26f..1ff3f7caf 100644 --- a/src/pipewire/impl-client.c +++ b/src/pipewire/impl-client.c @@ -437,13 +437,6 @@ int pw_impl_client_register(struct pw_impl_client *client, pw_log_debug(NAME" %p: register", client); - if (properties == NULL) - properties = pw_properties_new(NULL, NULL); - if (properties == NULL) - return -errno; - - pw_properties_update_keys(properties, &client->properties->dict, keys); - client->global = pw_global_new(context, PW_TYPE_INTERFACE_Client, PW_VERSION_CLIENT, @@ -460,6 +453,8 @@ int pw_impl_client_register(struct pw_impl_client *client, pw_properties_setf(client->properties, PW_KEY_OBJECT_ID, "%d", client->info.id); client->info.props = &client->properties->dict; + pw_global_update_keys(client->global, client->info.props, keys); + pw_impl_client_emit_initialized(client); pw_global_add_listener(client->global, &client->global_listener, &global_events, client); diff --git a/src/pipewire/impl-core.c b/src/pipewire/impl-core.c index 9d3a00e41..41dd7c825 100644 --- a/src/pipewire/impl-core.c +++ b/src/pipewire/impl-core.c @@ -564,13 +564,6 @@ int pw_impl_core_register(struct pw_impl_core *core, if (core->registered) goto error_existed; - if (properties == NULL) - properties = pw_properties_new(NULL, NULL); - if (properties == NULL) - return -errno; - - pw_properties_update_keys(properties, &core->properties->dict, keys); - core->global = pw_global_new(context, PW_TYPE_INTERFACE_Core, PW_VERSION_CORE, @@ -587,16 +580,18 @@ int pw_impl_core_register(struct pw_impl_core *core, pw_properties_setf(core->properties, PW_KEY_OBJECT_ID, "%d", core->info.id); core->info.props = &core->properties->dict; + pw_global_update_keys(core->global, core->info.props, keys); + pw_impl_core_emit_initialized(core); pw_global_add_listener(core->global, &core->global_listener, &global_events, core); pw_global_register(core->global); return 0; + error_existed: res = -EEXIST; goto error_exit; - error_exit: if (properties) pw_properties_free(properties); diff --git a/src/pipewire/impl-device.c b/src/pipewire/impl-device.c index f80e82695..3f7f1d950 100644 --- a/src/pipewire/impl-device.c +++ b/src/pipewire/impl-device.c @@ -479,13 +479,6 @@ int pw_impl_device_register(struct pw_impl_device *device, if (device->registered) goto error_existed; - if (properties == NULL) - properties = pw_properties_new(NULL, NULL); - if (properties == NULL) - return -errno; - - pw_properties_update_keys(properties, &device->properties->dict, keys); - device->global = pw_global_new(context, PW_TYPE_INTERFACE_Device, PW_VERSION_DEVICE, @@ -502,6 +495,8 @@ int pw_impl_device_register(struct pw_impl_device *device, pw_properties_setf(device->properties, PW_KEY_OBJECT_ID, "%d", device->info.id); device->info.props = &device->properties->dict; + pw_global_update_keys(device->global, device->info.props, keys); + pw_impl_device_emit_initialized(device); pw_global_add_listener(device->global, &device->global_listener, &global_events, device); diff --git a/src/pipewire/impl-factory.c b/src/pipewire/impl-factory.c index dd3a7795b..b6f80e475 100644 --- a/src/pipewire/impl-factory.c +++ b/src/pipewire/impl-factory.c @@ -176,23 +176,15 @@ int pw_impl_factory_register(struct pw_impl_factory *factory, struct pw_context *context = factory->context; const char *keys[] = { PW_KEY_MODULE_ID, + PW_KEY_FACTORY_NAME, + PW_KEY_FACTORY_TYPE_NAME, + PW_KEY_FACTORY_TYPE_VERSION, NULL }; if (factory->registered) goto error_existed; - if (properties == NULL) - properties = pw_properties_new(NULL, NULL); - if (properties == NULL) - return -errno; - - pw_properties_update_keys(properties, &factory->properties->dict, keys); - - pw_properties_set(properties, PW_KEY_FACTORY_NAME, factory->info.name); - pw_properties_setf(properties, PW_KEY_FACTORY_TYPE_NAME, "%s", factory->info.type); - pw_properties_setf(properties, PW_KEY_FACTORY_TYPE_VERSION, "%d", factory->info.version); - factory->global = pw_global_new(context, PW_TYPE_INTERFACE_Factory, PW_VERSION_FACTORY, @@ -207,8 +199,13 @@ int pw_impl_factory_register(struct pw_impl_factory *factory, factory->info.id = factory->global->id; pw_properties_setf(factory->properties, PW_KEY_OBJECT_ID, "%d", factory->info.id); + pw_properties_set(factory->properties, PW_KEY_FACTORY_NAME, factory->info.name); + pw_properties_setf(factory->properties, PW_KEY_FACTORY_TYPE_NAME, "%s", factory->info.type); + pw_properties_setf(factory->properties, PW_KEY_FACTORY_TYPE_VERSION, "%d", factory->info.version); factory->info.props = &factory->properties->dict; + pw_global_update_keys(factory->global, factory->info.props, keys); + pw_impl_factory_emit_initialized(factory); pw_global_add_listener(factory->global, &factory->global_listener, &global_events, factory); diff --git a/src/pipewire/impl-link.c b/src/pipewire/impl-link.c index 9ea04382a..1db6c0bff 100644 --- a/src/pipewire/impl-link.c +++ b/src/pipewire/impl-link.c @@ -1177,17 +1177,14 @@ int pw_impl_link_register(struct pw_impl_link *link, PW_KEY_MODULE_ID, PW_KEY_FACTORY_ID, PW_KEY_CLIENT_ID, + PW_KEY_LINK_OUTPUT_PORT, + PW_KEY_LINK_INPUT_PORT, NULL }; if (link->registered) goto error_existed; - if (properties == NULL) - properties = pw_properties_new(NULL, NULL); - if (properties == NULL) - return -errno; - output_node = link->output->node; input_node = link->input->node; @@ -1196,11 +1193,6 @@ int pw_impl_link_register(struct pw_impl_link *link, link->info.input_node_id = input_node->global->id; link->info.input_port_id = link->input->global->id; - pw_properties_update_keys(properties, &link->properties->dict, keys); - - pw_properties_setf(properties, PW_KEY_LINK_OUTPUT_PORT, "%d", link->info.output_port_id); - pw_properties_setf(properties, PW_KEY_LINK_INPUT_PORT, "%d", link->info.input_port_id); - link->global = pw_global_new(context, PW_TYPE_INTERFACE_Link, PW_VERSION_LINK, @@ -1215,8 +1207,12 @@ int pw_impl_link_register(struct pw_impl_link *link, link->info.id = link->global->id; pw_properties_setf(link->properties, PW_KEY_OBJECT_ID, "%d", link->info.id); + pw_properties_setf(link->properties, PW_KEY_LINK_OUTPUT_PORT, "%d", link->info.output_port_id); + pw_properties_setf(link->properties, PW_KEY_LINK_INPUT_PORT, "%d", link->info.input_port_id); link->info.props = &link->properties->dict; + pw_global_update_keys(link->global, link->info.props, keys); + pw_impl_link_emit_initialized(link); pw_global_add_listener(link->global, &link->global_listener, &global_events, link); diff --git a/src/pipewire/impl-node.c b/src/pipewire/impl-node.c index 163721025..bf52d6368 100644 --- a/src/pipewire/impl-node.c +++ b/src/pipewire/impl-node.c @@ -634,13 +634,6 @@ int pw_impl_node_register(struct pw_impl_node *this, if (this->registered) goto error_existed; - if (properties == NULL) - properties = pw_properties_new(NULL, NULL); - if (properties == NULL) - return -errno; - - pw_properties_update_keys(properties, &this->properties->dict, keys); - this->global = pw_global_new(context, PW_TYPE_INTERFACE_Node, PW_VERSION_NODE, @@ -661,6 +654,8 @@ int pw_impl_node_register(struct pw_impl_node *this, pw_properties_setf(this->properties, PW_KEY_OBJECT_ID, "%d", this->info.id); this->info.props = &this->properties->dict; + pw_global_update_keys(this->global, &this->properties->dict, keys); + pw_impl_node_initialized(this); pw_global_add_listener(this->global, &this->global_listener, &global_events, this); diff --git a/src/pipewire/impl-port.c b/src/pipewire/impl-port.c index 1111302a4..aad1a2ee6 100644 --- a/src/pipewire/impl-port.c +++ b/src/pipewire/impl-port.c @@ -782,6 +782,7 @@ int pw_impl_port_register(struct pw_impl_port *port, const char *keys[] = { PW_KEY_OBJECT_PATH, PW_KEY_FORMAT_DSP, + PW_KEY_NODE_ID, PW_KEY_AUDIO_CHANNEL, PW_KEY_PORT_NAME, PW_KEY_PORT_DIRECTION, @@ -795,14 +796,6 @@ int pw_impl_port_register(struct pw_impl_port *port, if (node == NULL || node->global == NULL) return -EIO; - if (properties == NULL) - properties = pw_properties_new(NULL, NULL); - if (properties == NULL) - return -errno; - - pw_properties_setf(properties, PW_KEY_NODE_ID, "%d", node->global->id); - pw_properties_update_keys(properties, &port->properties->dict, keys); - port->global = pw_global_new(node->context, PW_TYPE_INTERFACE_Port, PW_VERSION_PORT, @@ -819,6 +812,8 @@ int pw_impl_port_register(struct pw_impl_port *port, pw_properties_setf(port->properties, PW_KEY_OBJECT_ID, "%d", port->info.id); port->info.props = &port->properties->dict; + pw_global_update_keys(port->global, &port->properties->dict, keys); + pw_impl_port_emit_initialized(port); return pw_global_register(port->global);