mirror of
				https://gitlab.freedesktop.org/pipewire/pipewire.git
				synced 2025-11-03 09:01:54 -05:00 
			
		
		
		
	
							parent
							
								
									5135f9767a
								
							
						
					
					
						commit
						b1fb4a2660
					
				
					 18 changed files with 77 additions and 19 deletions
				
			
		| 
						 | 
				
			
			@ -304,6 +304,8 @@ int endpoint_stream_init(struct endpoint_stream *this,
 | 
			
		|||
 | 
			
		||||
	pw_properties_setf(this->props, PW_KEY_OBJECT_ID, "%u",
 | 
			
		||||
			pw_global_get_id(this->global));
 | 
			
		||||
	pw_properties_setf(this->props, PW_KEY_OBJECT_SERIAL, "%"PRIu64,
 | 
			
		||||
			pw_global_get_serial(this->global));
 | 
			
		||||
 | 
			
		||||
	this->info.version = PW_VERSION_ENDPOINT_STREAM_INFO;
 | 
			
		||||
	this->info.id = pw_global_get_id(this->global);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -305,6 +305,7 @@ 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,
 | 
			
		||||
| 
						 | 
				
			
			@ -333,6 +334,8 @@ int endpoint_init(struct endpoint *this,
 | 
			
		|||
 | 
			
		||||
	pw_properties_setf(this->props, PW_KEY_OBJECT_ID, "%u",
 | 
			
		||||
			pw_global_get_id(this->global));
 | 
			
		||||
	pw_properties_setf(this->props, PW_KEY_OBJECT_SERIAL, "%"PRIu64,
 | 
			
		||||
			pw_global_get_serial(this->global));
 | 
			
		||||
 | 
			
		||||
	this->info.version = PW_VERSION_ENDPOINT_INFO;
 | 
			
		||||
	this->info.id = pw_global_get_id(this->global);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -322,6 +322,8 @@ int endpoint_link_init(struct endpoint_link *this,
 | 
			
		|||
 | 
			
		||||
	pw_properties_setf(this->props, PW_KEY_OBJECT_ID, "%u",
 | 
			
		||||
			pw_global_get_id(this->global));
 | 
			
		||||
	pw_properties_setf(this->props, PW_KEY_OBJECT_SERIAL, "%"PRIu64,
 | 
			
		||||
			pw_global_get_serial(this->global));
 | 
			
		||||
 | 
			
		||||
	this->info.version = PW_VERSION_ENDPOINT_LINK_INFO;
 | 
			
		||||
	this->info.id = pw_global_get_id(this->global);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -276,6 +276,7 @@ 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
 | 
			
		||||
| 
						 | 
				
			
			@ -295,6 +296,8 @@ int session_init(struct session *this,
 | 
			
		|||
 | 
			
		||||
	pw_properties_setf(this->props, PW_KEY_OBJECT_ID, "%u",
 | 
			
		||||
			pw_global_get_id(this->global));
 | 
			
		||||
	pw_properties_setf(this->props, PW_KEY_OBJECT_SERIAL, "%"PRIu64,
 | 
			
		||||
			pw_global_get_serial(this->global));
 | 
			
		||||
 | 
			
		||||
	this->info.version = PW_VERSION_SESSION_INFO;
 | 
			
		||||
	this->info.id = pw_global_get_id(this->global);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -215,6 +215,7 @@ struct pw_context *pw_context_new(struct pw_loop *main_loop,
 | 
			
		|||
 | 
			
		||||
	pw_array_init(&this->factory_lib, 32);
 | 
			
		||||
	pw_array_init(&this->objects, 32);
 | 
			
		||||
	pw_map_init(&this->globals, 128, 32);
 | 
			
		||||
 | 
			
		||||
	spa_list_init(&this->core_impl_list);
 | 
			
		||||
	spa_list_init(&this->protocol_list);
 | 
			
		||||
| 
						 | 
				
			
			@ -482,6 +483,8 @@ void pw_context_destroy(struct pw_context *context)
 | 
			
		|||
 | 
			
		||||
	pw_array_clear(&context->objects);
 | 
			
		||||
 | 
			
		||||
	pw_map_clear(&context->globals);
 | 
			
		||||
 | 
			
		||||
	spa_hook_list_clean(&context->listener_list);
 | 
			
		||||
	spa_hook_list_clean(&context->driver_listener_list);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -579,23 +582,12 @@ int pw_context_for_each_global(struct pw_context *context,
 | 
			
		|||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static struct pw_global *find_global(struct pw_context *context, uint32_t id)
 | 
			
		||||
{
 | 
			
		||||
	struct pw_global *g;
 | 
			
		||||
	spa_list_for_each(g, &context->global_list, link) {
 | 
			
		||||
		if (g->id == id)
 | 
			
		||||
			return g;
 | 
			
		||||
	}
 | 
			
		||||
	return NULL;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
SPA_EXPORT
 | 
			
		||||
struct pw_global *pw_context_find_global(struct pw_context *context, uint32_t id)
 | 
			
		||||
{
 | 
			
		||||
	struct pw_global *global;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	global = find_global(context, id);
 | 
			
		||||
	global = pw_map_lookup(&context->globals, id);
 | 
			
		||||
	if (global == NULL || !global->registered) {
 | 
			
		||||
		errno = ENOENT;
 | 
			
		||||
		return NULL;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -96,9 +96,13 @@ pw_global_new(struct pw_context *context,
 | 
			
		|||
	this->func = func;
 | 
			
		||||
	this->object = object;
 | 
			
		||||
	this->properties = properties;
 | 
			
		||||
	this->id = serial++;
 | 
			
		||||
	if ((uint32_t)this->id == SPA_ID_INVALID)
 | 
			
		||||
		this->id = serial++;
 | 
			
		||||
	this->id = pw_map_insert_new(&context->globals, this);
 | 
			
		||||
	if (this->id == SPA_ID_INVALID) {
 | 
			
		||||
		res = -errno;
 | 
			
		||||
		pw_log_error("%p: can't allocate new id: %m", this);
 | 
			
		||||
		goto error_free;
 | 
			
		||||
	}
 | 
			
		||||
	this->serial = SPA_ID_INVALID;
 | 
			
		||||
 | 
			
		||||
	spa_list_init(&this->resource_list);
 | 
			
		||||
	spa_hook_list_init(&this->listener_list);
 | 
			
		||||
| 
						 | 
				
			
			@ -107,12 +111,24 @@ pw_global_new(struct pw_context *context,
 | 
			
		|||
 | 
			
		||||
	return this;
 | 
			
		||||
 | 
			
		||||
error_free:
 | 
			
		||||
	free(impl);
 | 
			
		||||
error_cleanup:
 | 
			
		||||
	pw_properties_free(properties);
 | 
			
		||||
	errno = -res;
 | 
			
		||||
	return NULL;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
SPA_EXPORT
 | 
			
		||||
uint64_t pw_global_get_serial(struct pw_global *global)
 | 
			
		||||
{
 | 
			
		||||
	if (global->serial == SPA_ID_INVALID)
 | 
			
		||||
		global->serial = serial++;
 | 
			
		||||
	if ((uint32_t)serial == SPA_ID_INVALID)
 | 
			
		||||
		serial++;
 | 
			
		||||
	return global->serial;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/** register a global to the context registry
 | 
			
		||||
 *
 | 
			
		||||
 * \param global a global to add
 | 
			
		||||
| 
						 | 
				
			
			@ -133,8 +149,8 @@ int pw_global_register(struct pw_global *global)
 | 
			
		|||
 | 
			
		||||
	spa_list_for_each(registry, &context->registry_resource_list, link) {
 | 
			
		||||
		uint32_t permissions = pw_global_get_permissions(global, registry->client);
 | 
			
		||||
		pw_log_debug("registry %p: global %d %08x",
 | 
			
		||||
				registry, global->id, permissions);
 | 
			
		||||
		pw_log_debug("registry %p: global %d %08x serial:%"PRIu64,
 | 
			
		||||
				registry, global->id, permissions, global->serial);
 | 
			
		||||
		if (PW_PERM_IS_R(permissions))
 | 
			
		||||
			pw_registry_resource_global(registry,
 | 
			
		||||
						    global->id,
 | 
			
		||||
| 
						 | 
				
			
			@ -167,6 +183,7 @@ static int global_unregister(struct pw_global *global)
 | 
			
		|||
 | 
			
		||||
	spa_list_remove(&global->link);
 | 
			
		||||
	global->registered = false;
 | 
			
		||||
	global->serial = SPA_ID_INVALID;
 | 
			
		||||
 | 
			
		||||
	pw_log_debug("%p: unregistered %u", global, global->id);
 | 
			
		||||
	pw_context_emit_global_removed(context, global);
 | 
			
		||||
| 
						 | 
				
			
			@ -335,8 +352,9 @@ int pw_global_update_permissions(struct pw_global *global, struct pw_impl_client
 | 
			
		|||
			pw_registry_resource_global_remove(resource, global->id);
 | 
			
		||||
		}
 | 
			
		||||
		else if (do_show) {
 | 
			
		||||
			pw_log_debug("client %p: resource %p show global %d",
 | 
			
		||||
					client, resource, global->id);
 | 
			
		||||
			pw_log_debug("client %p: resource %p show global %d serial:%"PRIu64,
 | 
			
		||||
					client, resource, global->id,
 | 
			
		||||
					global->serial);
 | 
			
		||||
			pw_registry_resource_global(resource,
 | 
			
		||||
						    global->id,
 | 
			
		||||
						    new_permissions,
 | 
			
		||||
| 
						 | 
				
			
			@ -368,6 +386,7 @@ SPA_EXPORT
 | 
			
		|||
void pw_global_destroy(struct pw_global *global)
 | 
			
		||||
{
 | 
			
		||||
	struct pw_resource *resource;
 | 
			
		||||
	struct pw_context *context = global->context;
 | 
			
		||||
 | 
			
		||||
	global->destroyed = true;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -382,6 +401,7 @@ void pw_global_destroy(struct pw_global *global)
 | 
			
		|||
	pw_log_debug("%p: free", global);
 | 
			
		||||
	pw_global_emit_free(global);
 | 
			
		||||
 | 
			
		||||
	pw_map_remove(&context->globals, global->id);
 | 
			
		||||
	spa_hook_list_clean(&global->listener_list);
 | 
			
		||||
 | 
			
		||||
	pw_properties_free(global->properties);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -127,6 +127,9 @@ void *pw_global_get_object(struct pw_global *global);
 | 
			
		|||
/** Get the unique id of the global */
 | 
			
		||||
uint32_t pw_global_get_id(struct pw_global *global);
 | 
			
		||||
 | 
			
		||||
/** Get the serial number of the global */
 | 
			
		||||
uint64_t pw_global_get_serial(struct pw_global *global);
 | 
			
		||||
 | 
			
		||||
/** Add a resource to a global */
 | 
			
		||||
int pw_global_add_resource(struct pw_global *global, struct pw_resource *resource);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -475,6 +475,7 @@ 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,
 | 
			
		||||
| 
						 | 
				
			
			@ -505,6 +506,8 @@ int pw_impl_client_register(struct pw_impl_client *client,
 | 
			
		|||
 | 
			
		||||
	client->info.id = client->global->id;
 | 
			
		||||
	pw_properties_setf(client->properties, PW_KEY_OBJECT_ID, "%d", client->info.id);
 | 
			
		||||
	pw_properties_setf(client->properties, PW_KEY_OBJECT_SERIAL, "%"PRIu64,
 | 
			
		||||
			pw_global_get_serial(client->global));
 | 
			
		||||
	client->info.props = &client->properties->dict;
 | 
			
		||||
	pw_global_add_listener(client->global, &client->global_listener, &global_events, client);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -583,6 +583,7 @@ 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,
 | 
			
		||||
| 
						 | 
				
			
			@ -610,6 +611,8 @@ int pw_impl_core_register(struct pw_impl_core *core,
 | 
			
		|||
 | 
			
		||||
	core->info.id = core->global->id;
 | 
			
		||||
	pw_properties_setf(core->properties, PW_KEY_OBJECT_ID, "%d", core->info.id);
 | 
			
		||||
	pw_properties_setf(core->properties, PW_KEY_OBJECT_SERIAL, "%"PRIu64,
 | 
			
		||||
			pw_global_get_serial(core->global));
 | 
			
		||||
	core->info.props = &core->properties->dict;
 | 
			
		||||
 | 
			
		||||
	pw_global_update_keys(core->global, core->info.props, keys);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -556,6 +556,7 @@ 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,
 | 
			
		||||
| 
						 | 
				
			
			@ -588,6 +589,8 @@ int pw_impl_device_register(struct pw_impl_device *device,
 | 
			
		|||
 | 
			
		||||
	device->info.id = device->global->id;
 | 
			
		||||
	pw_properties_setf(device->properties, PW_KEY_OBJECT_ID, "%d", device->info.id);
 | 
			
		||||
	pw_properties_setf(device->properties, PW_KEY_OBJECT_SERIAL, "%"PRIu64,
 | 
			
		||||
			pw_global_get_serial(device->global));
 | 
			
		||||
	device->info.props = &device->properties->dict;
 | 
			
		||||
 | 
			
		||||
	pw_global_update_keys(device->global, device->info.props, keys);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -178,6 +178,7 @@ 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,
 | 
			
		||||
| 
						 | 
				
			
			@ -204,6 +205,8 @@ 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_setf(factory->properties, PW_KEY_OBJECT_SERIAL, "%"PRIu64,
 | 
			
		||||
			pw_global_get_serial(factory->global));
 | 
			
		||||
	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);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1346,6 +1346,7 @@ 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,
 | 
			
		||||
| 
						 | 
				
			
			@ -1385,6 +1386,8 @@ 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_OBJECT_SERIAL, "%"PRIu64,
 | 
			
		||||
			pw_global_get_serial(link->global));
 | 
			
		||||
	pw_properties_setf(link->properties, PW_KEY_LINK_OUTPUT_NODE, "%u", link->info.output_node_id);
 | 
			
		||||
	pw_properties_setf(link->properties, PW_KEY_LINK_OUTPUT_PORT, "%u", link->info.output_port_id);
 | 
			
		||||
	pw_properties_setf(link->properties, PW_KEY_LINK_INPUT_NODE, "%u", link->info.input_node_id);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -546,6 +546,9 @@ int pw_impl_metadata_register(struct pw_impl_metadata *metadata,
 | 
			
		|||
	spa_list_append(&context->metadata_list, &metadata->link);
 | 
			
		||||
	metadata->registered = true;
 | 
			
		||||
 | 
			
		||||
	pw_properties_setf(metadata->properties, PW_KEY_OBJECT_SERIAL, "%"PRIu64,
 | 
			
		||||
			pw_global_get_serial(metadata->global));
 | 
			
		||||
 | 
			
		||||
	pw_global_update_keys(metadata->global, &metadata->properties->dict, keys);
 | 
			
		||||
 | 
			
		||||
	pw_global_add_listener(metadata->global, &metadata->global_listener, &global_events, metadata);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -247,6 +247,8 @@ pw_context_load_module(struct pw_context *context,
 | 
			
		|||
 | 
			
		||||
	this->info.id = this->global->id;
 | 
			
		||||
	pw_properties_setf(this->properties, PW_KEY_OBJECT_ID, "%d", this->info.id);
 | 
			
		||||
	pw_properties_setf(this->properties, PW_KEY_OBJECT_SERIAL, "%"PRIu64,
 | 
			
		||||
			pw_global_get_serial(this->global));
 | 
			
		||||
	this->info.props = &this->properties->dict;
 | 
			
		||||
 | 
			
		||||
	pw_impl_module_emit_initialized(this);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -678,6 +678,7 @@ 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,
 | 
			
		||||
| 
						 | 
				
			
			@ -723,6 +724,8 @@ int pw_impl_node_register(struct pw_impl_node *this,
 | 
			
		|||
 | 
			
		||||
	this->info.id = this->global->id;
 | 
			
		||||
	pw_properties_setf(this->properties, PW_KEY_OBJECT_ID, "%d", this->info.id);
 | 
			
		||||
	pw_properties_setf(this->properties, PW_KEY_OBJECT_SERIAL, "%"PRIu64,
 | 
			
		||||
			pw_global_get_serial(this->global));
 | 
			
		||||
	this->info.props = &this->properties->dict;
 | 
			
		||||
 | 
			
		||||
	pw_global_update_keys(this->global, &this->properties->dict, keys);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -889,6 +889,7 @@ 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,
 | 
			
		||||
| 
						 | 
				
			
			@ -924,6 +925,8 @@ int pw_impl_port_register(struct pw_impl_port *port,
 | 
			
		|||
	port->info.id = port->global->id;
 | 
			
		||||
	pw_properties_setf(port->properties, PW_KEY_NODE_ID, "%d", node->global->id);
 | 
			
		||||
	pw_properties_setf(port->properties, PW_KEY_OBJECT_ID, "%d", port->info.id);
 | 
			
		||||
	pw_properties_setf(port->properties, PW_KEY_OBJECT_SERIAL, "%"PRIu64,
 | 
			
		||||
			pw_global_get_serial(port->global));
 | 
			
		||||
	port->info.props = &port->properties->dict;
 | 
			
		||||
 | 
			
		||||
	pw_global_update_keys(port->global, &port->properties->dict, keys);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -64,6 +64,10 @@ extern "C" {
 | 
			
		|||
/** object properties */
 | 
			
		||||
#define PW_KEY_OBJECT_PATH		"object.path"		/**< unique path to construct the object */
 | 
			
		||||
#define PW_KEY_OBJECT_ID		"object.id"		/**< a global object id */
 | 
			
		||||
#define PW_KEY_OBJECT_SERIAL		"object.serial"		/**< a 64 bit object serial number. This is a number
 | 
			
		||||
								  *  incremented for each object that is created.
 | 
			
		||||
								  *  The lower 32 bits are guaranteed to never be
 | 
			
		||||
								  *  SPA_ID_INVALID. */
 | 
			
		||||
#define PW_KEY_OBJECT_LINGER		"object.linger"		/**< the object lives on even after the client
 | 
			
		||||
								  *  that created it has been destroyed */
 | 
			
		||||
#define PW_KEY_OBJECT_REGISTER		"object.register"	/**< If the object should be registered. */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -331,6 +331,7 @@ struct pw_global {
 | 
			
		|||
 | 
			
		||||
	pw_global_bind_func_t func;	/**< bind function */
 | 
			
		||||
	void *object;			/**< object associated with the interface */
 | 
			
		||||
	uint64_t serial;		/**< increasing serial number */
 | 
			
		||||
 | 
			
		||||
	struct spa_list resource_list;	/**< The list of resources of this global */
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -421,6 +422,8 @@ struct pw_context {
 | 
			
		|||
 | 
			
		||||
	struct pw_mempool *pool;		/**< global memory pool */
 | 
			
		||||
 | 
			
		||||
	struct pw_map globals;			/**< map of globals */
 | 
			
		||||
 | 
			
		||||
	struct spa_list core_impl_list;		/**< list of core_imp */
 | 
			
		||||
	struct spa_list protocol_list;		/**< list of protocols */
 | 
			
		||||
	struct spa_list core_list;		/**< list of core connections */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue