diff --git a/src/modules/module-client-device/resource-device.c b/src/modules/module-client-device/resource-device.c index 34a647287..cd3767a17 100644 --- a/src/modules/module-client-device/resource-device.c +++ b/src/modules/module-client-device/resource-device.c @@ -97,9 +97,20 @@ static void device_destroy(void *data) pw_resource_destroy(impl->resource); } +static void device_initialized(void *data) +{ + struct impl *impl = data; + struct pw_device *device = impl->device; + struct pw_global *global = pw_device_get_global(device); + + pw_log_debug("client-device %p: initialized global:%d", impl, global->id); + pw_resource_bound_id(impl->resource, global->id); +} + static const struct pw_device_events device_events = { PW_VERSION_DEVICE_EVENTS, .destroy = device_destroy, + .initialized = device_initialized, }; struct pw_device *pw_client_device_new(struct pw_resource *resource, diff --git a/src/modules/module-client-node/client-node.c b/src/modules/module-client-node/client-node.c index a1b5d72a2..04ec29075 100644 --- a/src/modules/module-client-node/client-node.c +++ b/src/modules/module-client-node/client-node.c @@ -1228,6 +1228,8 @@ void pw_client_node_registered(struct pw_client_node *this, struct pw_global *gl if (this->resource == NULL) return; + pw_resource_bound_id(this->resource, node_id); + pw_client_node_resource_transport(this->resource, node_id, impl->other_fds[0], diff --git a/src/modules/module-session-manager/endpoint.c b/src/modules/module-session-manager/endpoint.c index 196407038..435c6a4d3 100644 --- a/src/modules/module-session-manager/endpoint.c +++ b/src/modules/module-session-manager/endpoint.c @@ -317,6 +317,7 @@ int endpoint_init(struct endpoint *this, this->info.id = this->global->id; this->info.props = &this->props->dict; + pw_resource_bound_id(client_ep->resource, this->global->id); pw_client_endpoint_resource_set_id(client_ep->resource, this->global->id); return pw_global_register(this->global); diff --git a/src/modules/module-session-manager/session.c b/src/modules/module-session-manager/session.c index d64739d84..46a1362d4 100644 --- a/src/modules/module-session-manager/session.c +++ b/src/modules/module-session-manager/session.c @@ -313,6 +313,7 @@ int session_init(struct session *this, this->info.id = this->global->id; this->info.props = &this->props->dict; + pw_resource_bound_id(client_sess->resource, this->global->id); pw_client_session_resource_set_id(client_sess->resource, this->global->id); return pw_global_register(this->global); diff --git a/src/pipewire/client.c b/src/pipewire/client.c index 8c84b9d1d..469285c17 100644 --- a/src/pipewire/client.c +++ b/src/pipewire/client.c @@ -212,6 +212,7 @@ global_bind(void *_data, struct pw_client *client, uint32_t permissions, pw_log_debug(NAME" %p: bound to %d", this, resource->id); spa_list_append(&global->resource_list, &resource->link); + pw_resource_bound_id(resource, global->id); if (resource->id == 1) client->client_resource = resource; diff --git a/src/pipewire/core.c b/src/pipewire/core.c index e2d97ea25..3459237d4 100644 --- a/src/pipewire/core.c +++ b/src/pipewire/core.c @@ -432,6 +432,7 @@ global_bind(void *_data, &core_methods, resource); spa_list_append(&global->resource_list, &resource->link); + pw_resource_bound_id(resource, global->id); if (resource->id == 0) client->core_resource = resource; diff --git a/src/pipewire/device.c b/src/pipewire/device.c index 844eeaaa6..74294652d 100644 --- a/src/pipewire/device.c +++ b/src/pipewire/device.c @@ -375,6 +375,7 @@ global_bind(void *_data, struct pw_client *client, uint32_t permissions, pw_log_debug(NAME" %p: bound to %d", this, resource->id); spa_list_append(&global->resource_list, &resource->link); + pw_resource_bound_id(resource, global->id); this->info.change_mask = PW_DEVICE_CHANGE_MASK_ALL; pw_device_resource_info(resource, &this->info); diff --git a/src/pipewire/factory.c b/src/pipewire/factory.c index b6648a3fe..fc091c53a 100644 --- a/src/pipewire/factory.c +++ b/src/pipewire/factory.c @@ -138,6 +138,7 @@ global_bind(void *_data, struct pw_client *client, uint32_t permissions, pw_log_debug(NAME" %p: bound to %d", this, resource->id); spa_list_append(&global->resource_list, &resource->link); + pw_resource_bound_id(resource, global->id); this->info.change_mask = ~0; pw_factory_resource_info(resource, &this->info); diff --git a/src/pipewire/link.c b/src/pipewire/link.c index c02d624c0..b9e3d3c11 100644 --- a/src/pipewire/link.c +++ b/src/pipewire/link.c @@ -824,6 +824,7 @@ global_bind(void *_data, struct pw_client *client, uint32_t permissions, pw_log_debug(NAME" %p: bound to %d", this, resource->id); spa_list_append(&global->resource_list, &resource->link); + pw_resource_bound_id(resource, global->id); this->info.change_mask = ~0; pw_link_resource_info(resource, &this->info); diff --git a/src/pipewire/module.c b/src/pipewire/module.c index c10df9eff..b80cc89e4 100644 --- a/src/pipewire/module.c +++ b/src/pipewire/module.c @@ -139,6 +139,7 @@ global_bind(void *_data, struct pw_client *client, uint32_t permissions, pw_log_debug(NAME" %p: bound to %d", this, resource->id); spa_list_append(&global->resource_list, &resource->link); + pw_resource_bound_id(resource, global->id); this->info.change_mask = ~0; pw_module_resource_info(resource, &this->info); diff --git a/src/pipewire/node.c b/src/pipewire/node.c index 49b4e0d5f..bc70c3e6e 100644 --- a/src/pipewire/node.c +++ b/src/pipewire/node.c @@ -522,6 +522,7 @@ global_bind(void *_data, struct pw_client *client, uint32_t permissions, pw_log_debug(NAME" %p: bound to %d", this, resource->id); spa_list_append(&global->resource_list, &resource->link); + pw_resource_bound_id(resource, global->id); this->info.change_mask = PW_NODE_CHANGE_MASK_ALL; pw_node_resource_info(resource, &this->info); diff --git a/src/pipewire/port.c b/src/pipewire/port.c index 01fd3479c..962049bd4 100644 --- a/src/pipewire/port.c +++ b/src/pipewire/port.c @@ -752,6 +752,7 @@ global_bind(void *_data, struct pw_client *client, uint32_t permissions, pw_log_debug(NAME" %p: bound to %d", this, resource->id); spa_list_append(&global->resource_list, &resource->link); + pw_resource_bound_id(resource, global->id); this->info.change_mask = PW_PORT_CHANGE_MASK_ALL; pw_port_resource_info(resource, &this->info);