mirror of
				https://gitlab.freedesktop.org/pipewire/pipewire.git
				synced 2025-11-03 09:01:54 -05:00 
			
		
		
		
	pw_factory -> pw_impl_factory
This commit is contained in:
		
							parent
							
								
									73900eea1b
								
							
						
					
					
						commit
						815d4a8d20
					
				
					 17 changed files with 170 additions and 169 deletions
				
			
		| 
						 | 
				
			
			@ -48,7 +48,7 @@ struct data {
 | 
			
		|||
 | 
			
		||||
static int make_device(struct data *data)
 | 
			
		||||
{
 | 
			
		||||
	struct pw_factory *factory;
 | 
			
		||||
	struct pw_impl_factory *factory;
 | 
			
		||||
	struct pw_properties *props;
 | 
			
		||||
 | 
			
		||||
        factory = pw_context_find_factory(data->context, "spa-device-factory");
 | 
			
		||||
| 
						 | 
				
			
			@ -58,7 +58,7 @@ static int make_device(struct data *data)
 | 
			
		|||
        props = pw_properties_new(SPA_KEY_LIBRARY_NAME, data->library,
 | 
			
		||||
                                  SPA_KEY_FACTORY_NAME, data->factory, NULL);
 | 
			
		||||
 | 
			
		||||
	data->device = pw_factory_create_object(factory,
 | 
			
		||||
	data->device = pw_impl_factory_create_object(factory,
 | 
			
		||||
					      NULL,
 | 
			
		||||
					      PW_TYPE_INTERFACE_Device,
 | 
			
		||||
					      PW_VERSION_DEVICE_PROXY,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -107,7 +107,7 @@ static struct bluez5_node *bluez5_create_node(struct bluez5_object *obj, uint32_
 | 
			
		|||
	struct bluez5_node *node;
 | 
			
		||||
	struct impl *impl = obj->impl;
 | 
			
		||||
	struct pw_context *context = impl->session->context;
 | 
			
		||||
	struct pw_factory *factory;
 | 
			
		||||
	struct pw_impl_factory *factory;
 | 
			
		||||
	int res;
 | 
			
		||||
	const char *str;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -149,7 +149,7 @@ static struct bluez5_node *bluez5_create_node(struct bluez5_object *obj, uint32_
 | 
			
		|||
		res = -EIO;
 | 
			
		||||
		goto clean_node;
 | 
			
		||||
	}
 | 
			
		||||
	node->adapter = pw_factory_create_object(factory,
 | 
			
		||||
	node->adapter = pw_impl_factory_create_object(factory,
 | 
			
		||||
			NULL,
 | 
			
		||||
			PW_TYPE_INTERFACE_Node,
 | 
			
		||||
			PW_VERSION_NODE_PROXY,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -51,7 +51,7 @@ static const struct spa_dict_item module_props[] = {
 | 
			
		|||
};
 | 
			
		||||
 | 
			
		||||
struct factory_data {
 | 
			
		||||
	struct pw_factory *this;
 | 
			
		||||
	struct pw_impl_factory *this;
 | 
			
		||||
 | 
			
		||||
	struct spa_list node_list;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -238,8 +238,8 @@ error_cleanup:
 | 
			
		|||
	return NULL;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static const struct pw_factory_implementation impl_factory = {
 | 
			
		||||
	PW_VERSION_FACTORY_IMPLEMENTATION,
 | 
			
		||||
static const struct pw_impl_factory_implementation impl_factory = {
 | 
			
		||||
	PW_VERSION_IMPL_FACTORY_IMPLEMENTATION,
 | 
			
		||||
	.create_object = create_object,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -253,23 +253,23 @@ static void module_destroy(void *data)
 | 
			
		|||
	spa_list_for_each_safe(nd, t, &d->node_list, link)
 | 
			
		||||
		pw_node_destroy(nd->adapter);
 | 
			
		||||
 | 
			
		||||
	pw_factory_destroy(d->this);
 | 
			
		||||
	pw_impl_factory_destroy(d->this);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void module_registered(void *data)
 | 
			
		||||
{
 | 
			
		||||
	struct factory_data *d = data;
 | 
			
		||||
	struct pw_module *module = d->module;
 | 
			
		||||
	struct pw_factory *factory = d->this;
 | 
			
		||||
	struct pw_impl_factory *factory = d->this;
 | 
			
		||||
	struct spa_dict_item items[1];
 | 
			
		||||
	char id[16];
 | 
			
		||||
	int res;
 | 
			
		||||
 | 
			
		||||
	snprintf(id, sizeof(id), "%d", module->global->id);
 | 
			
		||||
	items[0] = SPA_DICT_ITEM_INIT(PW_KEY_MODULE_ID, id);
 | 
			
		||||
	pw_factory_update_properties(factory, &SPA_DICT_INIT(items, 1));
 | 
			
		||||
	pw_impl_factory_update_properties(factory, &SPA_DICT_INIT(items, 1));
 | 
			
		||||
 | 
			
		||||
	if ((res = pw_factory_register(factory, NULL)) < 0) {
 | 
			
		||||
	if ((res = pw_impl_factory_register(factory, NULL)) < 0) {
 | 
			
		||||
		pw_log_error(NAME" %p: can't register factory: %s", factory, spa_strerror(res));
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -284,10 +284,10 @@ SPA_EXPORT
 | 
			
		|||
int pipewire__module_init(struct pw_module *module, const char *args)
 | 
			
		||||
{
 | 
			
		||||
	struct pw_context *context = pw_module_get_context(module);
 | 
			
		||||
	struct pw_factory *factory;
 | 
			
		||||
	struct pw_impl_factory *factory;
 | 
			
		||||
	struct factory_data *data;
 | 
			
		||||
 | 
			
		||||
	factory = pw_factory_new(context,
 | 
			
		||||
	factory = pw_impl_factory_new(context,
 | 
			
		||||
				 "adapter",
 | 
			
		||||
				 PW_TYPE_INTERFACE_Node,
 | 
			
		||||
				 PW_VERSION_NODE_PROXY,
 | 
			
		||||
| 
						 | 
				
			
			@ -298,7 +298,7 @@ int pipewire__module_init(struct pw_module *module, const char *args)
 | 
			
		|||
	if (factory == NULL)
 | 
			
		||||
		return -errno;
 | 
			
		||||
 | 
			
		||||
	data = pw_factory_get_user_data(factory);
 | 
			
		||||
	data = pw_impl_factory_get_user_data(factory);
 | 
			
		||||
	data->this = factory;
 | 
			
		||||
	data->context = context;
 | 
			
		||||
	data->module = module;
 | 
			
		||||
| 
						 | 
				
			
			@ -306,7 +306,7 @@ int pipewire__module_init(struct pw_module *module, const char *args)
 | 
			
		|||
 | 
			
		||||
	pw_log_debug("module %p: new", module);
 | 
			
		||||
 | 
			
		||||
	pw_factory_set_implementation(factory,
 | 
			
		||||
	pw_impl_factory_set_implementation(factory,
 | 
			
		||||
				      &impl_factory,
 | 
			
		||||
				      data);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -50,7 +50,7 @@ struct pw_proxy *pw_core_spa_device_export(struct pw_core *core,
 | 
			
		|||
struct pw_protocol *pw_protocol_native_ext_client_device_init(struct pw_context *context);
 | 
			
		||||
 | 
			
		||||
struct factory_data {
 | 
			
		||||
	struct pw_factory *this;
 | 
			
		||||
	struct pw_impl_factory *this;
 | 
			
		||||
 | 
			
		||||
	struct pw_module *module;
 | 
			
		||||
	struct spa_hook module_listener;
 | 
			
		||||
| 
						 | 
				
			
			@ -66,7 +66,7 @@ static void *create_object(void *_data,
 | 
			
		|||
			   uint32_t new_id)
 | 
			
		||||
{
 | 
			
		||||
	struct factory_data *data = _data;
 | 
			
		||||
	struct pw_factory *this = data->this;
 | 
			
		||||
	struct pw_impl_factory *this = data->this;
 | 
			
		||||
	void *result;
 | 
			
		||||
	struct pw_resource *device_resource;
 | 
			
		||||
	struct pw_impl_client *client = pw_resource_get_client(resource);
 | 
			
		||||
| 
						 | 
				
			
			@ -86,7 +86,7 @@ static void *create_object(void *_data,
 | 
			
		|||
	}
 | 
			
		||||
 | 
			
		||||
	pw_properties_setf(properties, PW_KEY_FACTORY_ID, "%d",
 | 
			
		||||
			pw_global_get_id(pw_factory_get_global(this)));
 | 
			
		||||
			pw_global_get_id(pw_impl_factory_get_global(this)));
 | 
			
		||||
	pw_properties_setf(properties, PW_KEY_CLIENT_ID, "%d",
 | 
			
		||||
			pw_global_get_id(pw_impl_client_get_global(client)));
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -117,8 +117,8 @@ error_exit:
 | 
			
		|||
	return NULL;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static const struct pw_factory_implementation impl_factory = {
 | 
			
		||||
	PW_VERSION_FACTORY_IMPLEMENTATION,
 | 
			
		||||
static const struct pw_impl_factory_implementation impl_factory = {
 | 
			
		||||
	PW_VERSION_IMPL_FACTORY_IMPLEMENTATION,
 | 
			
		||||
	.create_object = create_object,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -130,23 +130,23 @@ static void module_destroy(void *data)
 | 
			
		|||
 | 
			
		||||
	spa_list_remove(&d->export_spadevice.link);
 | 
			
		||||
 | 
			
		||||
	pw_factory_destroy(d->this);
 | 
			
		||||
	pw_impl_factory_destroy(d->this);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void module_registered(void *data)
 | 
			
		||||
{
 | 
			
		||||
	struct factory_data *d = data;
 | 
			
		||||
	struct pw_module *module = d->module;
 | 
			
		||||
	struct pw_factory *factory = d->this;
 | 
			
		||||
	struct pw_impl_factory *factory = d->this;
 | 
			
		||||
	struct spa_dict_item items[1];
 | 
			
		||||
	char id[16];
 | 
			
		||||
	int res;
 | 
			
		||||
 | 
			
		||||
	snprintf(id, sizeof(id), "%d", pw_global_get_id(pw_module_get_global(module)));
 | 
			
		||||
	items[0] = SPA_DICT_ITEM_INIT(PW_KEY_MODULE_ID, id);
 | 
			
		||||
	pw_factory_update_properties(factory, &SPA_DICT_INIT(items, 1));
 | 
			
		||||
	pw_impl_factory_update_properties(factory, &SPA_DICT_INIT(items, 1));
 | 
			
		||||
 | 
			
		||||
	if ((res = pw_factory_register(factory, NULL)) < 0) {
 | 
			
		||||
	if ((res = pw_impl_factory_register(factory, NULL)) < 0) {
 | 
			
		||||
		pw_log_error(NAME" %p: can't register factory: %s", factory, spa_strerror(res));
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -161,10 +161,10 @@ SPA_EXPORT
 | 
			
		|||
int pipewire__module_init(struct pw_module *module, const char *args)
 | 
			
		||||
{
 | 
			
		||||
	struct pw_context *context = pw_module_get_context(module);
 | 
			
		||||
	struct pw_factory *factory;
 | 
			
		||||
	struct pw_impl_factory *factory;
 | 
			
		||||
	struct factory_data *data;
 | 
			
		||||
 | 
			
		||||
	factory = pw_factory_new(context,
 | 
			
		||||
	factory = pw_impl_factory_new(context,
 | 
			
		||||
				 "client-device",
 | 
			
		||||
				 SPA_TYPE_INTERFACE_Device,
 | 
			
		||||
				 SPA_VERSION_DEVICE,
 | 
			
		||||
| 
						 | 
				
			
			@ -175,13 +175,13 @@ int pipewire__module_init(struct pw_module *module, const char *args)
 | 
			
		|||
	if (factory == NULL)
 | 
			
		||||
		return -errno;
 | 
			
		||||
 | 
			
		||||
	data = pw_factory_get_user_data(factory);
 | 
			
		||||
	data = pw_impl_factory_get_user_data(factory);
 | 
			
		||||
	data->this = factory;
 | 
			
		||||
	data->module = module;
 | 
			
		||||
 | 
			
		||||
	pw_log_debug("module %p: new", module);
 | 
			
		||||
 | 
			
		||||
	pw_factory_set_implementation(factory,
 | 
			
		||||
	pw_impl_factory_set_implementation(factory,
 | 
			
		||||
				      &impl_factory,
 | 
			
		||||
				      data);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -53,7 +53,7 @@ struct pw_protocol *pw_protocol_native_ext_client_node_init(struct pw_context *c
 | 
			
		|||
struct pw_protocol *pw_protocol_native_ext_client_node0_init(struct pw_context *context);
 | 
			
		||||
 | 
			
		||||
struct factory_data {
 | 
			
		||||
	struct pw_factory *this;
 | 
			
		||||
	struct pw_impl_factory *this;
 | 
			
		||||
 | 
			
		||||
	struct pw_module *module;
 | 
			
		||||
	struct spa_hook module_listener;
 | 
			
		||||
| 
						 | 
				
			
			@ -107,8 +107,8 @@ error_exit:
 | 
			
		|||
	return NULL;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static const struct pw_factory_implementation impl_factory = {
 | 
			
		||||
	PW_VERSION_FACTORY_IMPLEMENTATION,
 | 
			
		||||
static const struct pw_impl_factory_implementation impl_factory = {
 | 
			
		||||
	PW_VERSION_IMPL_FACTORY_IMPLEMENTATION,
 | 
			
		||||
	.create_object = create_object,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -121,23 +121,23 @@ static void module_destroy(void *data)
 | 
			
		|||
	spa_list_remove(&d->export_node.link);
 | 
			
		||||
	spa_list_remove(&d->export_spanode.link);
 | 
			
		||||
 | 
			
		||||
	pw_factory_destroy(d->this);
 | 
			
		||||
	pw_impl_factory_destroy(d->this);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void module_registered(void *data)
 | 
			
		||||
{
 | 
			
		||||
	struct factory_data *d = data;
 | 
			
		||||
	struct pw_module *module = d->module;
 | 
			
		||||
	struct pw_factory *factory = d->this;
 | 
			
		||||
	struct pw_impl_factory *factory = d->this;
 | 
			
		||||
	struct spa_dict_item items[1];
 | 
			
		||||
	char id[16];
 | 
			
		||||
	int res;
 | 
			
		||||
 | 
			
		||||
	snprintf(id, sizeof(id), "%d", pw_global_get_id(pw_module_get_global(module)));
 | 
			
		||||
	items[0] = SPA_DICT_ITEM_INIT(PW_KEY_MODULE_ID, id);
 | 
			
		||||
	pw_factory_update_properties(factory, &SPA_DICT_INIT(items, 1));
 | 
			
		||||
	pw_impl_factory_update_properties(factory, &SPA_DICT_INIT(items, 1));
 | 
			
		||||
 | 
			
		||||
	if ((res = pw_factory_register(factory, NULL)) < 0) {
 | 
			
		||||
	if ((res = pw_impl_factory_register(factory, NULL)) < 0) {
 | 
			
		||||
		pw_log_error(NAME" %p: can't register factory: %s", factory, spa_strerror(res));
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -152,10 +152,10 @@ SPA_EXPORT
 | 
			
		|||
int pipewire__module_init(struct pw_module *module, const char *args)
 | 
			
		||||
{
 | 
			
		||||
	struct pw_context *context = pw_module_get_context(module);
 | 
			
		||||
	struct pw_factory *factory;
 | 
			
		||||
	struct pw_impl_factory *factory;
 | 
			
		||||
	struct factory_data *data;
 | 
			
		||||
 | 
			
		||||
	factory = pw_factory_new(context,
 | 
			
		||||
	factory = pw_impl_factory_new(context,
 | 
			
		||||
				 "client-node",
 | 
			
		||||
				 PW_TYPE_INTERFACE_ClientNode,
 | 
			
		||||
				 PW_VERSION_CLIENT_NODE,
 | 
			
		||||
| 
						 | 
				
			
			@ -164,13 +164,13 @@ int pipewire__module_init(struct pw_module *module, const char *args)
 | 
			
		|||
	if (factory == NULL)
 | 
			
		||||
		return -errno;
 | 
			
		||||
 | 
			
		||||
	data = pw_factory_get_user_data(factory);
 | 
			
		||||
	data = pw_impl_factory_get_user_data(factory);
 | 
			
		||||
	data->this = factory;
 | 
			
		||||
	data->module = module;
 | 
			
		||||
 | 
			
		||||
	pw_log_debug("module %p: new", module);
 | 
			
		||||
 | 
			
		||||
	pw_factory_set_implementation(factory,
 | 
			
		||||
	pw_impl_factory_set_implementation(factory,
 | 
			
		||||
				      &impl_factory,
 | 
			
		||||
				      data);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -49,7 +49,7 @@ static const struct spa_dict_item module_props[] = {
 | 
			
		|||
 | 
			
		||||
struct factory_data {
 | 
			
		||||
	struct pw_module *module;
 | 
			
		||||
	struct pw_factory *this;
 | 
			
		||||
	struct pw_impl_factory *this;
 | 
			
		||||
 | 
			
		||||
	struct spa_list link_list;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -319,8 +319,8 @@ error_exit:
 | 
			
		|||
	return NULL;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static const struct pw_factory_implementation impl_factory = {
 | 
			
		||||
	PW_VERSION_FACTORY_IMPLEMENTATION,
 | 
			
		||||
static const struct pw_impl_factory_implementation impl_factory = {
 | 
			
		||||
	PW_VERSION_IMPL_FACTORY_IMPLEMENTATION,
 | 
			
		||||
	.create_object = create_object,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -334,23 +334,23 @@ static void module_destroy(void *data)
 | 
			
		|||
	spa_list_for_each_safe(ld, t, &d->link_list, l)
 | 
			
		||||
		pw_link_destroy(ld->link);
 | 
			
		||||
 | 
			
		||||
	pw_factory_destroy(d->this);
 | 
			
		||||
	pw_impl_factory_destroy(d->this);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void module_registered(void *data)
 | 
			
		||||
{
 | 
			
		||||
	struct factory_data *d = data;
 | 
			
		||||
	struct pw_module *module = d->module;
 | 
			
		||||
	struct pw_factory *factory = d->this;
 | 
			
		||||
	struct pw_impl_factory *factory = d->this;
 | 
			
		||||
	struct spa_dict_item items[1];
 | 
			
		||||
	char id[16];
 | 
			
		||||
	int res;
 | 
			
		||||
 | 
			
		||||
	snprintf(id, sizeof(id), "%d", pw_global_get_id(pw_module_get_global(module)));
 | 
			
		||||
	items[0] = SPA_DICT_ITEM_INIT(PW_KEY_MODULE_ID, id);
 | 
			
		||||
	pw_factory_update_properties(factory, &SPA_DICT_INIT(items, 1));
 | 
			
		||||
	pw_impl_factory_update_properties(factory, &SPA_DICT_INIT(items, 1));
 | 
			
		||||
 | 
			
		||||
	if ((res = pw_factory_register(factory, NULL)) < 0) {
 | 
			
		||||
	if ((res = pw_impl_factory_register(factory, NULL)) < 0) {
 | 
			
		||||
		pw_log_error(NAME" %p: can't register factory: %s", factory, spa_strerror(res));
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -365,10 +365,10 @@ SPA_EXPORT
 | 
			
		|||
int pipewire__module_init(struct pw_module *module, const char *args)
 | 
			
		||||
{
 | 
			
		||||
	struct pw_context *context = pw_module_get_context(module);
 | 
			
		||||
	struct pw_factory *factory;
 | 
			
		||||
	struct pw_impl_factory *factory;
 | 
			
		||||
	struct factory_data *data;
 | 
			
		||||
 | 
			
		||||
	factory = pw_factory_new(context,
 | 
			
		||||
	factory = pw_impl_factory_new(context,
 | 
			
		||||
				 "link-factory",
 | 
			
		||||
				 PW_TYPE_INTERFACE_Link,
 | 
			
		||||
				 PW_VERSION_LINK_PROXY,
 | 
			
		||||
| 
						 | 
				
			
			@ -379,14 +379,14 @@ int pipewire__module_init(struct pw_module *module, const char *args)
 | 
			
		|||
	if (factory == NULL)
 | 
			
		||||
		return -errno;
 | 
			
		||||
 | 
			
		||||
	data = pw_factory_get_user_data(factory);
 | 
			
		||||
	data = pw_impl_factory_get_user_data(factory);
 | 
			
		||||
	data->this = factory;
 | 
			
		||||
	data->module = module;
 | 
			
		||||
	spa_list_init(&data->link_list);
 | 
			
		||||
 | 
			
		||||
	pw_log_debug("module %p: new", module);
 | 
			
		||||
 | 
			
		||||
	pw_factory_set_implementation(factory,
 | 
			
		||||
	pw_impl_factory_set_implementation(factory,
 | 
			
		||||
				      &impl_factory,
 | 
			
		||||
				      data);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -52,7 +52,7 @@ struct pw_proxy *pw_core_metadata_export(struct pw_core *core,
 | 
			
		|||
int pw_protocol_native_ext_metadata_init(struct pw_context *context);
 | 
			
		||||
 | 
			
		||||
struct factory_data {
 | 
			
		||||
	struct pw_factory *this;
 | 
			
		||||
	struct pw_impl_factory *this;
 | 
			
		||||
 | 
			
		||||
	struct pw_module *module;
 | 
			
		||||
	struct spa_hook module_listener;
 | 
			
		||||
| 
						 | 
				
			
			@ -103,8 +103,8 @@ error_exit:
 | 
			
		|||
	return NULL;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static const struct pw_factory_implementation impl_factory = {
 | 
			
		||||
	PW_VERSION_FACTORY_IMPLEMENTATION,
 | 
			
		||||
static const struct pw_impl_factory_implementation impl_factory = {
 | 
			
		||||
	PW_VERSION_IMPL_FACTORY_IMPLEMENTATION,
 | 
			
		||||
	.create_object = create_object,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -116,23 +116,23 @@ static void module_destroy(void *data)
 | 
			
		|||
 | 
			
		||||
	spa_list_remove(&d->export_metadata.link);
 | 
			
		||||
 | 
			
		||||
	pw_factory_destroy(d->this);
 | 
			
		||||
	pw_impl_factory_destroy(d->this);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void module_registered(void *data)
 | 
			
		||||
{
 | 
			
		||||
	struct factory_data *d = data;
 | 
			
		||||
	struct pw_module *module = d->module;
 | 
			
		||||
	struct pw_factory *factory = d->this;
 | 
			
		||||
	struct pw_impl_factory *factory = d->this;
 | 
			
		||||
	struct spa_dict_item items[1];
 | 
			
		||||
	char id[16];
 | 
			
		||||
	int res;
 | 
			
		||||
 | 
			
		||||
	snprintf(id, sizeof(id), "%d", pw_global_get_id(pw_module_get_global(module)));
 | 
			
		||||
	items[0] = SPA_DICT_ITEM_INIT(PW_KEY_MODULE_ID, id);
 | 
			
		||||
	pw_factory_update_properties(factory, &SPA_DICT_INIT(items, 1));
 | 
			
		||||
	pw_impl_factory_update_properties(factory, &SPA_DICT_INIT(items, 1));
 | 
			
		||||
 | 
			
		||||
	if ((res = pw_factory_register(factory, NULL)) < 0) {
 | 
			
		||||
	if ((res = pw_impl_factory_register(factory, NULL)) < 0) {
 | 
			
		||||
		pw_log_error(NAME" %p: can't register factory: %s", factory, spa_strerror(res));
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -147,14 +147,14 @@ SPA_EXPORT
 | 
			
		|||
int pipewire__module_init(struct pw_module *module, const char *args)
 | 
			
		||||
{
 | 
			
		||||
	struct pw_context *context = pw_module_get_context(module);
 | 
			
		||||
	struct pw_factory *factory;
 | 
			
		||||
	struct pw_impl_factory *factory;
 | 
			
		||||
	struct factory_data *data;
 | 
			
		||||
	int res;
 | 
			
		||||
 | 
			
		||||
	if ((res = pw_protocol_native_ext_metadata_init(context)) < 0)
 | 
			
		||||
		return res;
 | 
			
		||||
 | 
			
		||||
	factory = pw_factory_new(context,
 | 
			
		||||
	factory = pw_impl_factory_new(context,
 | 
			
		||||
				 "metadata",
 | 
			
		||||
				 PW_TYPE_INTERFACE_Metadata,
 | 
			
		||||
				 PW_VERSION_METADATA,
 | 
			
		||||
| 
						 | 
				
			
			@ -163,13 +163,13 @@ int pipewire__module_init(struct pw_module *module, const char *args)
 | 
			
		|||
	if (factory == NULL)
 | 
			
		||||
		return -errno;
 | 
			
		||||
 | 
			
		||||
	data = pw_factory_get_user_data(factory);
 | 
			
		||||
	data = pw_impl_factory_get_user_data(factory);
 | 
			
		||||
	data->this = factory;
 | 
			
		||||
	data->module = module;
 | 
			
		||||
 | 
			
		||||
	pw_log_debug("module %p: new", module);
 | 
			
		||||
 | 
			
		||||
	pw_factory_set_implementation(factory,
 | 
			
		||||
	pw_impl_factory_set_implementation(factory,
 | 
			
		||||
				      &impl_factory,
 | 
			
		||||
				      data);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -38,7 +38,7 @@
 | 
			
		|||
#define NAME "client-endpoint"
 | 
			
		||||
 | 
			
		||||
struct factory_data {
 | 
			
		||||
	struct pw_factory *factory;
 | 
			
		||||
	struct pw_impl_factory *factory;
 | 
			
		||||
	struct pw_module *module;
 | 
			
		||||
	struct spa_hook module_listener;
 | 
			
		||||
};
 | 
			
		||||
| 
						 | 
				
			
			@ -166,7 +166,7 @@ static void *create_object(void *data,
 | 
			
		|||
			   uint32_t new_id)
 | 
			
		||||
{
 | 
			
		||||
	struct factory_data *d = data;
 | 
			
		||||
	struct pw_factory *factory = d->factory;
 | 
			
		||||
	struct pw_impl_factory *factory = d->factory;
 | 
			
		||||
	struct client_endpoint *this;
 | 
			
		||||
	struct pw_impl_client *owner = pw_resource_get_client(owner_resource);
 | 
			
		||||
	struct pw_context *context = pw_impl_client_get_context(owner);
 | 
			
		||||
| 
						 | 
				
			
			@ -213,8 +213,8 @@ static void *create_object(void *data,
 | 
			
		|||
	return NULL;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static const struct pw_factory_implementation impl_factory = {
 | 
			
		||||
	PW_VERSION_FACTORY_IMPLEMENTATION,
 | 
			
		||||
static const struct pw_impl_factory_implementation impl_factory = {
 | 
			
		||||
	PW_VERSION_IMPL_FACTORY_IMPLEMENTATION,
 | 
			
		||||
	.create_object = create_object,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -223,23 +223,23 @@ static void module_destroy(void *data)
 | 
			
		|||
	struct factory_data *d = data;
 | 
			
		||||
 | 
			
		||||
	spa_hook_remove(&d->module_listener);
 | 
			
		||||
	pw_factory_destroy(d->factory);
 | 
			
		||||
	pw_impl_factory_destroy(d->factory);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void module_registered(void *data)
 | 
			
		||||
{
 | 
			
		||||
	struct factory_data *d = data;
 | 
			
		||||
	struct pw_module *module = d->module;
 | 
			
		||||
	struct pw_factory *factory = d->factory;
 | 
			
		||||
	struct pw_impl_factory *factory = d->factory;
 | 
			
		||||
	struct spa_dict_item items[1];
 | 
			
		||||
	char id[16];
 | 
			
		||||
	int res;
 | 
			
		||||
 | 
			
		||||
	snprintf(id, sizeof(id), "%d", module->global->id);
 | 
			
		||||
	items[0] = SPA_DICT_ITEM_INIT(PW_KEY_MODULE_ID, id);
 | 
			
		||||
	pw_factory_update_properties(factory, &SPA_DICT_INIT(items, 1));
 | 
			
		||||
	pw_impl_factory_update_properties(factory, &SPA_DICT_INIT(items, 1));
 | 
			
		||||
 | 
			
		||||
	if ((res = pw_factory_register(factory, NULL)) < 0) {
 | 
			
		||||
	if ((res = pw_impl_factory_register(factory, NULL)) < 0) {
 | 
			
		||||
		pw_log_error(NAME" %p: can't register factory: %s", factory, spa_strerror(res));
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -253,10 +253,10 @@ static const struct pw_module_events module_events = {
 | 
			
		|||
int client_endpoint_factory_init(struct pw_module *module)
 | 
			
		||||
{
 | 
			
		||||
	struct pw_context *context = pw_module_get_context(module);
 | 
			
		||||
	struct pw_factory *factory;
 | 
			
		||||
	struct pw_impl_factory *factory;
 | 
			
		||||
	struct factory_data *data;
 | 
			
		||||
 | 
			
		||||
	factory = pw_factory_new(context,
 | 
			
		||||
	factory = pw_impl_factory_new(context,
 | 
			
		||||
				 "client-endpoint",
 | 
			
		||||
				 PW_TYPE_INTERFACE_ClientEndpoint,
 | 
			
		||||
				 PW_VERSION_CLIENT_ENDPOINT_PROXY,
 | 
			
		||||
| 
						 | 
				
			
			@ -265,11 +265,11 @@ int client_endpoint_factory_init(struct pw_module *module)
 | 
			
		|||
	if (factory == NULL)
 | 
			
		||||
		return -ENOMEM;
 | 
			
		||||
 | 
			
		||||
	data = pw_factory_get_user_data(factory);
 | 
			
		||||
	data = pw_impl_factory_get_user_data(factory);
 | 
			
		||||
	data->factory = factory;
 | 
			
		||||
	data->module = module;
 | 
			
		||||
 | 
			
		||||
	pw_factory_set_implementation(factory, &impl_factory, data);
 | 
			
		||||
	pw_impl_factory_set_implementation(factory, &impl_factory, data);
 | 
			
		||||
 | 
			
		||||
	pw_module_add_listener(module, &data->module_listener, &module_events, data);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -38,7 +38,7 @@
 | 
			
		|||
#define NAME "client-session"
 | 
			
		||||
 | 
			
		||||
struct factory_data {
 | 
			
		||||
	struct pw_factory *factory;
 | 
			
		||||
	struct pw_impl_factory *factory;
 | 
			
		||||
	struct pw_module *module;
 | 
			
		||||
	struct spa_hook module_listener;
 | 
			
		||||
};
 | 
			
		||||
| 
						 | 
				
			
			@ -165,7 +165,7 @@ static void *create_object(void *data,
 | 
			
		|||
			   uint32_t new_id)
 | 
			
		||||
{
 | 
			
		||||
	struct factory_data *d = data;
 | 
			
		||||
	struct pw_factory *factory = d->factory;
 | 
			
		||||
	struct pw_impl_factory *factory = d->factory;
 | 
			
		||||
	struct client_session *this;
 | 
			
		||||
	struct pw_impl_client *owner = pw_resource_get_client(owner_resource);
 | 
			
		||||
	struct pw_context *context = pw_impl_client_get_context(owner);
 | 
			
		||||
| 
						 | 
				
			
			@ -212,8 +212,8 @@ static void *create_object(void *data,
 | 
			
		|||
	return NULL;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static const struct pw_factory_implementation impl_factory = {
 | 
			
		||||
	PW_VERSION_FACTORY_IMPLEMENTATION,
 | 
			
		||||
static const struct pw_impl_factory_implementation impl_factory = {
 | 
			
		||||
	PW_VERSION_IMPL_FACTORY_IMPLEMENTATION,
 | 
			
		||||
	.create_object = create_object,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -222,23 +222,23 @@ static void module_destroy(void *data)
 | 
			
		|||
	struct factory_data *d = data;
 | 
			
		||||
 | 
			
		||||
	spa_hook_remove(&d->module_listener);
 | 
			
		||||
	pw_factory_destroy(d->factory);
 | 
			
		||||
	pw_impl_factory_destroy(d->factory);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void module_registered(void *data)
 | 
			
		||||
{
 | 
			
		||||
	struct factory_data *d = data;
 | 
			
		||||
	struct pw_module *module = d->module;
 | 
			
		||||
	struct pw_factory *factory = d->factory;
 | 
			
		||||
	struct pw_impl_factory *factory = d->factory;
 | 
			
		||||
	struct spa_dict_item items[1];
 | 
			
		||||
	char id[16];
 | 
			
		||||
	int res;
 | 
			
		||||
 | 
			
		||||
	snprintf(id, sizeof(id), "%d", module->global->id);
 | 
			
		||||
	items[0] = SPA_DICT_ITEM_INIT(PW_KEY_MODULE_ID, id);
 | 
			
		||||
	pw_factory_update_properties(factory, &SPA_DICT_INIT(items, 1));
 | 
			
		||||
	pw_impl_factory_update_properties(factory, &SPA_DICT_INIT(items, 1));
 | 
			
		||||
 | 
			
		||||
	if ((res = pw_factory_register(factory, NULL)) < 0) {
 | 
			
		||||
	if ((res = pw_impl_factory_register(factory, NULL)) < 0) {
 | 
			
		||||
		pw_log_error(NAME" %p: can't register factory: %s", factory, spa_strerror(res));
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -252,10 +252,10 @@ static const struct pw_module_events module_events = {
 | 
			
		|||
int client_session_factory_init(struct pw_module *module)
 | 
			
		||||
{
 | 
			
		||||
	struct pw_context *context = pw_module_get_context(module);
 | 
			
		||||
	struct pw_factory *factory;
 | 
			
		||||
	struct pw_impl_factory *factory;
 | 
			
		||||
	struct factory_data *data;
 | 
			
		||||
 | 
			
		||||
	factory = pw_factory_new(context,
 | 
			
		||||
	factory = pw_impl_factory_new(context,
 | 
			
		||||
				 "client-session",
 | 
			
		||||
				 PW_TYPE_INTERFACE_ClientSession,
 | 
			
		||||
				 PW_VERSION_CLIENT_SESSION_PROXY,
 | 
			
		||||
| 
						 | 
				
			
			@ -264,11 +264,11 @@ int client_session_factory_init(struct pw_module *module)
 | 
			
		|||
	if (factory == NULL)
 | 
			
		||||
		return -ENOMEM;
 | 
			
		||||
 | 
			
		||||
	data = pw_factory_get_user_data(factory);
 | 
			
		||||
	data = pw_impl_factory_get_user_data(factory);
 | 
			
		||||
	data->factory = factory;
 | 
			
		||||
	data->module = module;
 | 
			
		||||
 | 
			
		||||
	pw_factory_set_implementation(factory, &impl_factory, data);
 | 
			
		||||
	pw_impl_factory_set_implementation(factory, &impl_factory, data);
 | 
			
		||||
 | 
			
		||||
	pw_module_add_listener(module, &data->module_listener, &module_events, data);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -49,7 +49,7 @@ static const struct spa_dict_item module_props[] = {
 | 
			
		|||
struct factory_data {
 | 
			
		||||
	struct pw_context *context;
 | 
			
		||||
	struct pw_module *module;
 | 
			
		||||
	struct pw_factory *this;
 | 
			
		||||
	struct pw_impl_factory *this;
 | 
			
		||||
 | 
			
		||||
	struct spa_hook factory_listener;
 | 
			
		||||
	struct spa_hook module_listener;
 | 
			
		||||
| 
						 | 
				
			
			@ -98,7 +98,7 @@ static void *create_object(void *_data,
 | 
			
		|||
		goto error_properties;
 | 
			
		||||
 | 
			
		||||
	pw_properties_setf(properties, PW_KEY_FACTORY_ID, "%d",
 | 
			
		||||
			pw_global_get_id(pw_factory_get_global(data->this)));
 | 
			
		||||
			pw_global_get_id(pw_impl_factory_get_global(data->this)));
 | 
			
		||||
 | 
			
		||||
	client = resource ? pw_resource_get_client(resource) : NULL;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -147,8 +147,8 @@ error_exit:
 | 
			
		|||
	return NULL;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static const struct pw_factory_implementation factory_impl = {
 | 
			
		||||
	PW_VERSION_FACTORY_IMPLEMENTATION,
 | 
			
		||||
static const struct pw_impl_factory_implementation factory_impl = {
 | 
			
		||||
	PW_VERSION_IMPL_FACTORY_IMPLEMENTATION,
 | 
			
		||||
	.create_object = create_object,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -163,31 +163,31 @@ static void factory_destroy(void *_data)
 | 
			
		|||
		pw_impl_device_destroy(nd->device);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static const struct pw_factory_events factory_events = {
 | 
			
		||||
	PW_VERSION_FACTORY_IMPLEMENTATION,
 | 
			
		||||
static const struct pw_impl_factory_events factory_events = {
 | 
			
		||||
	PW_VERSION_IMPL_FACTORY_EVENTS,
 | 
			
		||||
	.destroy = factory_destroy,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static void module_destroy(void *_data)
 | 
			
		||||
{
 | 
			
		||||
	struct factory_data *data = _data;
 | 
			
		||||
	pw_factory_destroy(data->this);
 | 
			
		||||
	pw_impl_factory_destroy(data->this);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void module_registered(void *data)
 | 
			
		||||
{
 | 
			
		||||
	struct factory_data *d = data;
 | 
			
		||||
	struct pw_module *module = d->module;
 | 
			
		||||
	struct pw_factory *factory = d->this;
 | 
			
		||||
	struct pw_impl_factory *factory = d->this;
 | 
			
		||||
	struct spa_dict_item items[1];
 | 
			
		||||
	char id[16];
 | 
			
		||||
	int res;
 | 
			
		||||
 | 
			
		||||
	snprintf(id, sizeof(id), "%d", pw_global_get_id(pw_module_get_global(module)));
 | 
			
		||||
	items[0] = SPA_DICT_ITEM_INIT(PW_KEY_MODULE_ID, id);
 | 
			
		||||
	pw_factory_update_properties(factory, &SPA_DICT_INIT(items, 1));
 | 
			
		||||
	pw_impl_factory_update_properties(factory, &SPA_DICT_INIT(items, 1));
 | 
			
		||||
 | 
			
		||||
	if ((res = pw_factory_register(factory, NULL)) < 0) {
 | 
			
		||||
	if ((res = pw_impl_factory_register(factory, NULL)) < 0) {
 | 
			
		||||
		pw_log_error(NAME" %p: can't register factory: %s", factory, spa_strerror(res));
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -202,10 +202,10 @@ SPA_EXPORT
 | 
			
		|||
int pipewire__module_init(struct pw_module *module, const char *args)
 | 
			
		||||
{
 | 
			
		||||
	struct pw_context *context = pw_module_get_context(module);
 | 
			
		||||
	struct pw_factory *factory;
 | 
			
		||||
	struct pw_impl_factory *factory;
 | 
			
		||||
	struct factory_data *data;
 | 
			
		||||
 | 
			
		||||
	factory = pw_factory_new(context,
 | 
			
		||||
	factory = pw_impl_factory_new(context,
 | 
			
		||||
				 "spa-device-factory",
 | 
			
		||||
				 PW_TYPE_INTERFACE_Device,
 | 
			
		||||
				 PW_VERSION_DEVICE_PROXY,
 | 
			
		||||
| 
						 | 
				
			
			@ -214,14 +214,14 @@ int pipewire__module_init(struct pw_module *module, const char *args)
 | 
			
		|||
	if (factory == NULL)
 | 
			
		||||
		return -errno;
 | 
			
		||||
 | 
			
		||||
	data = pw_factory_get_user_data(factory);
 | 
			
		||||
	data = pw_impl_factory_get_user_data(factory);
 | 
			
		||||
	data->this = factory;
 | 
			
		||||
	data->module = module;
 | 
			
		||||
	data->context = context;
 | 
			
		||||
	spa_list_init(&data->device_list);
 | 
			
		||||
 | 
			
		||||
	pw_factory_add_listener(factory, &data->factory_listener, &factory_events, data);
 | 
			
		||||
	pw_factory_set_implementation(factory, &factory_impl, data);
 | 
			
		||||
	pw_impl_factory_add_listener(factory, &data->factory_listener, &factory_events, data);
 | 
			
		||||
	pw_impl_factory_set_implementation(factory, &factory_impl, data);
 | 
			
		||||
 | 
			
		||||
	pw_log_debug("module %p: new", module);
 | 
			
		||||
	pw_module_update_properties(module, &SPA_DICT_INIT_ARRAY(module_props));
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -48,7 +48,7 @@ static const struct spa_dict_item module_props[] = {
 | 
			
		|||
 | 
			
		||||
struct factory_data {
 | 
			
		||||
	struct pw_context *context;
 | 
			
		||||
	struct pw_factory *this;
 | 
			
		||||
	struct pw_impl_factory *this;
 | 
			
		||||
	struct pw_module *module;
 | 
			
		||||
 | 
			
		||||
	struct spa_hook factory_listener;
 | 
			
		||||
| 
						 | 
				
			
			@ -118,7 +118,7 @@ static void *create_object(void *_data,
 | 
			
		|||
	client = resource ? pw_resource_get_client(resource) : NULL;
 | 
			
		||||
 | 
			
		||||
	pw_properties_setf(properties, PW_KEY_FACTORY_ID, "%d",
 | 
			
		||||
			pw_global_get_id(pw_factory_get_global(data->this)));
 | 
			
		||||
			pw_global_get_id(pw_impl_factory_get_global(data->this)));
 | 
			
		||||
 | 
			
		||||
	if (client) {
 | 
			
		||||
		pw_properties_setf(properties, PW_KEY_CLIENT_ID, "%d",
 | 
			
		||||
| 
						 | 
				
			
			@ -181,8 +181,8 @@ error_exit:
 | 
			
		|||
	return NULL;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static const struct pw_factory_implementation factory_impl = {
 | 
			
		||||
	PW_VERSION_FACTORY_IMPLEMENTATION,
 | 
			
		||||
static const struct pw_impl_factory_implementation factory_impl = {
 | 
			
		||||
	PW_VERSION_IMPL_FACTORY_IMPLEMENTATION,
 | 
			
		||||
	.create_object = create_object,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -197,31 +197,31 @@ static void factory_destroy(void *_data)
 | 
			
		|||
		pw_node_destroy(nd->node);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static const struct pw_factory_events factory_events = {
 | 
			
		||||
	PW_VERSION_FACTORY_IMPLEMENTATION,
 | 
			
		||||
static const struct pw_impl_factory_events factory_events = {
 | 
			
		||||
	PW_VERSION_IMPL_FACTORY_EVENTS,
 | 
			
		||||
	.destroy = factory_destroy,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static void module_destroy(void *_data)
 | 
			
		||||
{
 | 
			
		||||
	struct factory_data *data = _data;
 | 
			
		||||
	pw_factory_destroy(data->this);
 | 
			
		||||
	pw_impl_factory_destroy(data->this);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void module_registered(void *data)
 | 
			
		||||
{
 | 
			
		||||
	struct factory_data *d = data;
 | 
			
		||||
	struct pw_module *module = d->module;
 | 
			
		||||
	struct pw_factory *factory = d->this;
 | 
			
		||||
	struct pw_impl_factory *factory = d->this;
 | 
			
		||||
	struct spa_dict_item items[1];
 | 
			
		||||
	char id[16];
 | 
			
		||||
	int res;
 | 
			
		||||
 | 
			
		||||
	snprintf(id, sizeof(id), "%d", pw_global_get_id(pw_module_get_global(module)));
 | 
			
		||||
	items[0] = SPA_DICT_ITEM_INIT(PW_KEY_MODULE_ID, id);
 | 
			
		||||
	pw_factory_update_properties(factory, &SPA_DICT_INIT(items, 1));
 | 
			
		||||
	pw_impl_factory_update_properties(factory, &SPA_DICT_INIT(items, 1));
 | 
			
		||||
 | 
			
		||||
	if ((res = pw_factory_register(factory, NULL)) < 0) {
 | 
			
		||||
	if ((res = pw_impl_factory_register(factory, NULL)) < 0) {
 | 
			
		||||
		pw_log_error(NAME" %p: can't register factory: %s", factory, spa_strerror(res));
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -236,10 +236,10 @@ SPA_EXPORT
 | 
			
		|||
int pipewire__module_init(struct pw_module *module, const char *args)
 | 
			
		||||
{
 | 
			
		||||
	struct pw_context *context = pw_module_get_context(module);
 | 
			
		||||
	struct pw_factory *factory;
 | 
			
		||||
	struct pw_impl_factory *factory;
 | 
			
		||||
	struct factory_data *data;
 | 
			
		||||
 | 
			
		||||
	factory = pw_factory_new(context,
 | 
			
		||||
	factory = pw_impl_factory_new(context,
 | 
			
		||||
				 "spa-node-factory",
 | 
			
		||||
				 PW_TYPE_INTERFACE_Node,
 | 
			
		||||
				 PW_VERSION_NODE_PROXY,
 | 
			
		||||
| 
						 | 
				
			
			@ -248,14 +248,14 @@ int pipewire__module_init(struct pw_module *module, const char *args)
 | 
			
		|||
	if (factory == NULL)
 | 
			
		||||
		return -errno;
 | 
			
		||||
 | 
			
		||||
	data = pw_factory_get_user_data(factory);
 | 
			
		||||
	data = pw_impl_factory_get_user_data(factory);
 | 
			
		||||
	data->this = factory;
 | 
			
		||||
	data->context = context;
 | 
			
		||||
	data->module = module;
 | 
			
		||||
	spa_list_init(&data->node_list);
 | 
			
		||||
 | 
			
		||||
	pw_factory_add_listener(factory, &data->factory_listener, &factory_events, data);
 | 
			
		||||
	pw_factory_set_implementation(factory, &factory_impl, data);
 | 
			
		||||
	pw_impl_factory_add_listener(factory, &data->factory_listener, &factory_events, data);
 | 
			
		||||
	pw_impl_factory_set_implementation(factory, &factory_impl, data);
 | 
			
		||||
 | 
			
		||||
	pw_log_debug("module %p: new", module);
 | 
			
		||||
	pw_module_add_listener(module, &data->module_listener, &module_events, data);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -298,7 +298,7 @@ core_create_object(void *object,
 | 
			
		|||
{
 | 
			
		||||
	struct pw_resource *resource = object;
 | 
			
		||||
	struct pw_impl_client *client = resource->client;
 | 
			
		||||
	struct pw_factory *factory;
 | 
			
		||||
	struct pw_impl_factory *factory;
 | 
			
		||||
	void *obj;
 | 
			
		||||
	struct pw_properties *properties;
 | 
			
		||||
	struct pw_context *this = client->context;
 | 
			
		||||
| 
						 | 
				
			
			@ -326,7 +326,7 @@ core_create_object(void *object,
 | 
			
		|||
		properties = NULL;
 | 
			
		||||
 | 
			
		||||
	/* error will be posted */
 | 
			
		||||
	obj = pw_factory_create_object(factory, resource, type, version, properties, new_id);
 | 
			
		||||
	obj = pw_impl_factory_create_object(factory, resource, type, version, properties, new_id);
 | 
			
		||||
	if (obj == NULL)
 | 
			
		||||
		goto error_create_failed;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1078,10 +1078,10 @@ error:
 | 
			
		|||
 * \memberof pw_context
 | 
			
		||||
 */
 | 
			
		||||
SPA_EXPORT
 | 
			
		||||
struct pw_factory *pw_context_find_factory(struct pw_context *context,
 | 
			
		||||
struct pw_impl_factory *pw_context_find_factory(struct pw_context *context,
 | 
			
		||||
					const char *name)
 | 
			
		||||
{
 | 
			
		||||
	struct pw_factory *factory;
 | 
			
		||||
	struct pw_impl_factory *factory;
 | 
			
		||||
 | 
			
		||||
	spa_list_for_each(factory, &context->factory_list, link) {
 | 
			
		||||
		if (strcmp(factory->info.name, name) == 0)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -44,6 +44,7 @@ struct pw_context;
 | 
			
		|||
 | 
			
		||||
struct pw_global;
 | 
			
		||||
struct pw_impl_client;
 | 
			
		||||
struct pw_impl_factory;
 | 
			
		||||
 | 
			
		||||
#include <pipewire/introspect.h>
 | 
			
		||||
#include <pipewire/interfaces.h>
 | 
			
		||||
| 
						 | 
				
			
			@ -145,7 +146,7 @@ struct pw_global *pw_context_find_global(struct pw_context *context,	/**< the co
 | 
			
		|||
				      uint32_t id		/**< the global id */);
 | 
			
		||||
 | 
			
		||||
/** Find a factory by name */
 | 
			
		||||
struct pw_factory *
 | 
			
		||||
struct pw_impl_factory *
 | 
			
		||||
pw_context_find_factory(struct pw_context *context	/**< the context */,
 | 
			
		||||
		     const char *name		/**< the factory name */);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -38,14 +38,14 @@ struct resource_data {
 | 
			
		|||
};
 | 
			
		||||
 | 
			
		||||
SPA_EXPORT
 | 
			
		||||
struct pw_factory *pw_factory_new(struct pw_context *context,
 | 
			
		||||
struct pw_impl_factory *pw_impl_factory_new(struct pw_context *context,
 | 
			
		||||
				  const char *name,
 | 
			
		||||
				  uint32_t type,
 | 
			
		||||
				  uint32_t version,
 | 
			
		||||
				  struct pw_properties *properties,
 | 
			
		||||
				  size_t user_data_size)
 | 
			
		||||
{
 | 
			
		||||
	struct pw_factory *this;
 | 
			
		||||
	struct pw_impl_factory *this;
 | 
			
		||||
	int res;
 | 
			
		||||
 | 
			
		||||
	if (properties == NULL)
 | 
			
		||||
| 
						 | 
				
			
			@ -83,10 +83,10 @@ error_exit:
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
SPA_EXPORT
 | 
			
		||||
void pw_factory_destroy(struct pw_factory *factory)
 | 
			
		||||
void pw_impl_factory_destroy(struct pw_impl_factory *factory)
 | 
			
		||||
{
 | 
			
		||||
	pw_log_debug(NAME" %p: destroy", factory);
 | 
			
		||||
	pw_factory_emit_destroy(factory);
 | 
			
		||||
	pw_impl_factory_emit_destroy(factory);
 | 
			
		||||
 | 
			
		||||
	if (factory->registered)
 | 
			
		||||
		spa_list_remove(&factory->link);
 | 
			
		||||
| 
						 | 
				
			
			@ -96,7 +96,7 @@ void pw_factory_destroy(struct pw_factory *factory)
 | 
			
		|||
		pw_global_destroy(factory->global);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	pw_factory_emit_free(factory);
 | 
			
		||||
	pw_impl_factory_emit_free(factory);
 | 
			
		||||
	pw_log_debug(NAME" %p: free", factory);
 | 
			
		||||
	free((char *)factory->info.name);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -120,7 +120,7 @@ static int
 | 
			
		|||
global_bind(void *_data, struct pw_impl_client *client, uint32_t permissions,
 | 
			
		||||
		  uint32_t version, uint32_t id)
 | 
			
		||||
{
 | 
			
		||||
	struct pw_factory *this = _data;
 | 
			
		||||
	struct pw_impl_factory *this = _data;
 | 
			
		||||
	struct pw_global *global = this->global;
 | 
			
		||||
	struct pw_resource *resource;
 | 
			
		||||
	struct resource_data *data;
 | 
			
		||||
| 
						 | 
				
			
			@ -150,10 +150,10 @@ error_resource:
 | 
			
		|||
 | 
			
		||||
static void global_destroy(void *object)
 | 
			
		||||
{
 | 
			
		||||
	struct pw_factory *factory = object;
 | 
			
		||||
	struct pw_impl_factory *factory = object;
 | 
			
		||||
	spa_hook_remove(&factory->global_listener);
 | 
			
		||||
	factory->global = NULL;
 | 
			
		||||
	pw_factory_destroy(factory);
 | 
			
		||||
	pw_impl_factory_destroy(factory);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static const struct pw_global_events global_events = {
 | 
			
		||||
| 
						 | 
				
			
			@ -162,13 +162,13 @@ static const struct pw_global_events global_events = {
 | 
			
		|||
};
 | 
			
		||||
 | 
			
		||||
SPA_EXPORT
 | 
			
		||||
const struct pw_properties *pw_factory_get_properties(struct pw_factory *factory)
 | 
			
		||||
const struct pw_properties *pw_impl_factory_get_properties(struct pw_impl_factory *factory)
 | 
			
		||||
{
 | 
			
		||||
	return factory->properties;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
SPA_EXPORT
 | 
			
		||||
int pw_factory_update_properties(struct pw_factory *factory, const struct spa_dict *dict)
 | 
			
		||||
int pw_impl_factory_update_properties(struct pw_impl_factory *factory, const struct spa_dict *dict)
 | 
			
		||||
{
 | 
			
		||||
	struct pw_resource *resource;
 | 
			
		||||
	int changed;
 | 
			
		||||
| 
						 | 
				
			
			@ -191,7 +191,7 @@ int pw_factory_update_properties(struct pw_factory *factory, const struct spa_di
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
SPA_EXPORT
 | 
			
		||||
int pw_factory_register(struct pw_factory *factory,
 | 
			
		||||
int pw_impl_factory_register(struct pw_impl_factory *factory,
 | 
			
		||||
			 struct pw_properties *properties)
 | 
			
		||||
{
 | 
			
		||||
	struct pw_context *context = factory->context;
 | 
			
		||||
| 
						 | 
				
			
			@ -231,7 +231,7 @@ int pw_factory_register(struct pw_factory *factory,
 | 
			
		|||
	pw_properties_setf(factory->properties, PW_KEY_OBJECT_ID, "%d", factory->info.id);
 | 
			
		||||
	factory->info.props = &factory->properties->dict;
 | 
			
		||||
 | 
			
		||||
	pw_factory_emit_initialized(factory);
 | 
			
		||||
	pw_impl_factory_emit_initialized(factory);
 | 
			
		||||
 | 
			
		||||
	pw_global_add_listener(factory->global, &factory->global_listener, &global_events, factory);
 | 
			
		||||
	pw_global_register(factory->global);
 | 
			
		||||
| 
						 | 
				
			
			@ -245,36 +245,36 @@ error_existed:
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
SPA_EXPORT
 | 
			
		||||
void *pw_factory_get_user_data(struct pw_factory *factory)
 | 
			
		||||
void *pw_impl_factory_get_user_data(struct pw_impl_factory *factory)
 | 
			
		||||
{
 | 
			
		||||
	return factory->user_data;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
SPA_EXPORT
 | 
			
		||||
struct pw_global *pw_factory_get_global(struct pw_factory *factory)
 | 
			
		||||
struct pw_global *pw_impl_factory_get_global(struct pw_impl_factory *factory)
 | 
			
		||||
{
 | 
			
		||||
	return factory->global;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
SPA_EXPORT
 | 
			
		||||
void pw_factory_add_listener(struct pw_factory *factory,
 | 
			
		||||
void pw_impl_factory_add_listener(struct pw_impl_factory *factory,
 | 
			
		||||
			     struct spa_hook *listener,
 | 
			
		||||
			     const struct pw_factory_events *events,
 | 
			
		||||
			     const struct pw_impl_factory_events *events,
 | 
			
		||||
			     void *data)
 | 
			
		||||
{
 | 
			
		||||
	spa_hook_list_append(&factory->listener_list, listener, events, data);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
SPA_EXPORT
 | 
			
		||||
void pw_factory_set_implementation(struct pw_factory *factory,
 | 
			
		||||
				   const struct pw_factory_implementation *implementation,
 | 
			
		||||
void pw_impl_factory_set_implementation(struct pw_impl_factory *factory,
 | 
			
		||||
				   const struct pw_impl_factory_implementation *implementation,
 | 
			
		||||
				   void *data)
 | 
			
		||||
{
 | 
			
		||||
	factory->impl = SPA_CALLBACKS_INIT(implementation, data);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
SPA_EXPORT
 | 
			
		||||
void *pw_factory_create_object(struct pw_factory *factory,
 | 
			
		||||
void *pw_impl_factory_create_object(struct pw_impl_factory *factory,
 | 
			
		||||
			       struct pw_resource *resource,
 | 
			
		||||
			       uint32_t type,
 | 
			
		||||
			       uint32_t version,
 | 
			
		||||
| 
						 | 
				
			
			@ -283,7 +283,7 @@ void *pw_factory_create_object(struct pw_factory *factory,
 | 
			
		|||
{
 | 
			
		||||
	void *res = NULL;
 | 
			
		||||
	spa_callbacks_call_res(&factory->impl,
 | 
			
		||||
			struct pw_factory_implementation,
 | 
			
		||||
			struct pw_impl_factory_implementation,
 | 
			
		||||
			res, create_object, 0,
 | 
			
		||||
			resource, type, version, properties, new_id);
 | 
			
		||||
	return res;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -22,20 +22,20 @@
 | 
			
		|||
 * DEALINGS IN THE SOFTWARE.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef PIPEWIRE_FACTORY_H
 | 
			
		||||
#define PIPEWIRE_FACTORY_H
 | 
			
		||||
#ifndef PIPEWIRE_IMPL_FACTORY_H
 | 
			
		||||
#define PIPEWIRE_IMPL_FACTORY_H
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/** \class pw_factory
 | 
			
		||||
/** \class pw_impl_factory
 | 
			
		||||
 *
 | 
			
		||||
 * \brief PipeWire factory interface.
 | 
			
		||||
 *
 | 
			
		||||
 * The factory is used to make objects on demand.
 | 
			
		||||
 */
 | 
			
		||||
struct pw_factory;
 | 
			
		||||
struct pw_impl_factory;
 | 
			
		||||
 | 
			
		||||
#include <pipewire/context.h>
 | 
			
		||||
#include <pipewire/impl-client.h>
 | 
			
		||||
| 
						 | 
				
			
			@ -43,9 +43,9 @@ struct pw_factory;
 | 
			
		|||
#include <pipewire/properties.h>
 | 
			
		||||
#include <pipewire/resource.h>
 | 
			
		||||
 | 
			
		||||
/** Factory events, listen to them with \ref pw_factory_add_listener */
 | 
			
		||||
struct pw_factory_events {
 | 
			
		||||
#define PW_VERSION_FACTORY_EVENTS	0
 | 
			
		||||
/** Factory events, listen to them with \ref pw_impl_factory_add_listener */
 | 
			
		||||
struct pw_impl_factory_events {
 | 
			
		||||
#define PW_VERSION_IMPL_FACTORY_EVENTS	0
 | 
			
		||||
	uint32_t version;
 | 
			
		||||
 | 
			
		||||
	/** the factory is destroyed */
 | 
			
		||||
| 
						 | 
				
			
			@ -56,8 +56,8 @@ struct pw_factory_events {
 | 
			
		|||
        void (*initialized) (void *data);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
struct pw_factory_implementation {
 | 
			
		||||
#define PW_VERSION_FACTORY_IMPLEMENTATION	0
 | 
			
		||||
struct pw_impl_factory_implementation {
 | 
			
		||||
#define PW_VERSION_IMPL_FACTORY_IMPLEMENTATION	0
 | 
			
		||||
	uint32_t version;
 | 
			
		||||
 | 
			
		||||
	/** The function to create an object from this factory */
 | 
			
		||||
| 
						 | 
				
			
			@ -69,7 +69,7 @@ struct pw_factory_implementation {
 | 
			
		|||
				uint32_t new_id);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
struct pw_factory *pw_factory_new(struct pw_context *context,
 | 
			
		||||
struct pw_impl_factory *pw_impl_factory_new(struct pw_context *context,
 | 
			
		||||
				  const char *name,
 | 
			
		||||
				  uint32_t type,
 | 
			
		||||
				  uint32_t version,
 | 
			
		||||
| 
						 | 
				
			
			@ -77,32 +77,32 @@ struct pw_factory *pw_factory_new(struct pw_context *context,
 | 
			
		|||
				  size_t user_data_size);
 | 
			
		||||
 | 
			
		||||
/** Get the factory properties */
 | 
			
		||||
const struct pw_properties *pw_factory_get_properties(struct pw_factory *factory);
 | 
			
		||||
const struct pw_properties *pw_impl_factory_get_properties(struct pw_impl_factory *factory);
 | 
			
		||||
 | 
			
		||||
/** Update the factory properties */
 | 
			
		||||
int pw_factory_update_properties(struct pw_factory *factory, const struct spa_dict *dict);
 | 
			
		||||
int pw_impl_factory_update_properties(struct pw_impl_factory *factory, const struct spa_dict *dict);
 | 
			
		||||
 | 
			
		||||
int pw_factory_register(struct pw_factory *factory,
 | 
			
		||||
int pw_impl_factory_register(struct pw_impl_factory *factory,
 | 
			
		||||
			struct pw_properties *properties);
 | 
			
		||||
 | 
			
		||||
void pw_factory_destroy(struct pw_factory *factory);
 | 
			
		||||
void pw_impl_factory_destroy(struct pw_impl_factory *factory);
 | 
			
		||||
 | 
			
		||||
void *pw_factory_get_user_data(struct pw_factory *factory);
 | 
			
		||||
void *pw_impl_factory_get_user_data(struct pw_impl_factory *factory);
 | 
			
		||||
 | 
			
		||||
/** Get the global of this factory */
 | 
			
		||||
struct pw_global *pw_factory_get_global(struct pw_factory *factory);
 | 
			
		||||
struct pw_global *pw_impl_factory_get_global(struct pw_impl_factory *factory);
 | 
			
		||||
 | 
			
		||||
/** Add an event listener */
 | 
			
		||||
void pw_factory_add_listener(struct pw_factory *factory,
 | 
			
		||||
void pw_impl_factory_add_listener(struct pw_impl_factory *factory,
 | 
			
		||||
			     struct spa_hook *listener,
 | 
			
		||||
			     const struct pw_factory_events *events,
 | 
			
		||||
			     const struct pw_impl_factory_events *events,
 | 
			
		||||
			     void *data);
 | 
			
		||||
 | 
			
		||||
void pw_factory_set_implementation(struct pw_factory *factory,
 | 
			
		||||
				   const struct pw_factory_implementation *implementation,
 | 
			
		||||
void pw_impl_factory_set_implementation(struct pw_impl_factory *factory,
 | 
			
		||||
				   const struct pw_impl_factory_implementation *implementation,
 | 
			
		||||
				   void *data);
 | 
			
		||||
 | 
			
		||||
void *pw_factory_create_object(struct pw_factory *factory,
 | 
			
		||||
void *pw_impl_factory_create_object(struct pw_impl_factory *factory,
 | 
			
		||||
			       struct pw_resource *resource,
 | 
			
		||||
			       uint32_t type,
 | 
			
		||||
			       uint32_t version,
 | 
			
		||||
| 
						 | 
				
			
			@ -113,4 +113,4 @@ void *pw_factory_create_object(struct pw_factory *factory,
 | 
			
		|||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif /* PIPEWIRE_FACTORY_H */
 | 
			
		||||
#endif /* PIPEWIRE_IMPL_FACTORY_H */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -825,13 +825,13 @@ struct pw_filter {
 | 
			
		|||
	struct spa_list controls;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#define pw_factory_emit(s,m,v,...) spa_hook_list_call(&s->listener_list, struct pw_factory_events, m, v, ##__VA_ARGS__)
 | 
			
		||||
#define pw_impl_factory_emit(s,m,v,...) spa_hook_list_call(&s->listener_list, struct pw_impl_factory_events, m, v, ##__VA_ARGS__)
 | 
			
		||||
 | 
			
		||||
#define pw_factory_emit_destroy(s)		pw_factory_emit(s, destroy, 0)
 | 
			
		||||
#define pw_factory_emit_free(s)			pw_factory_emit(s, free, 0)
 | 
			
		||||
#define pw_factory_emit_initialized(s)		pw_factory_emit(s, initialized, 0)
 | 
			
		||||
#define pw_impl_factory_emit_destroy(s)		pw_impl_factory_emit(s, destroy, 0)
 | 
			
		||||
#define pw_impl_factory_emit_free(s)		pw_impl_factory_emit(s, free, 0)
 | 
			
		||||
#define pw_impl_factory_emit_initialized(s)	pw_impl_factory_emit(s, initialized, 0)
 | 
			
		||||
 | 
			
		||||
struct pw_factory {
 | 
			
		||||
struct pw_impl_factory {
 | 
			
		||||
	struct pw_context *context;		/**< the context */
 | 
			
		||||
	struct spa_list link;		/**< link in context node_factory_list */
 | 
			
		||||
	struct pw_global *global;	/**< global for this factory */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1318,7 +1318,7 @@ pw_stream_connect(struct pw_stream *stream,
 | 
			
		|||
		  uint32_t n_params)
 | 
			
		||||
{
 | 
			
		||||
	struct stream *impl = SPA_CONTAINER_OF(stream, struct stream, this);
 | 
			
		||||
	struct pw_factory *factory;
 | 
			
		||||
	struct pw_impl_factory *factory;
 | 
			
		||||
	struct pw_properties *props;
 | 
			
		||||
	struct pw_node *slave;
 | 
			
		||||
	const char *str;
 | 
			
		||||
| 
						 | 
				
			
			@ -1426,7 +1426,7 @@ pw_stream_connect(struct pw_stream *stream,
 | 
			
		|||
			goto error_node;
 | 
			
		||||
		}
 | 
			
		||||
		pw_properties_setf(props, "adapt.slave.node", "pointer:%p", slave);
 | 
			
		||||
		impl->node = pw_factory_create_object(factory,
 | 
			
		||||
		impl->node = pw_impl_factory_create_object(factory,
 | 
			
		||||
				NULL,
 | 
			
		||||
				PW_TYPE_INTERFACE_Node,
 | 
			
		||||
				PW_VERSION_NODE_PROXY,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue