mirror of
				https://gitlab.freedesktop.org/pipewire/pipewire.git
				synced 2025-11-03 09:01:54 -05:00 
			
		
		
		
	export-spa: implement with core-proxy
This commit is contained in:
		
							parent
							
								
									e2ba3dc6e4
								
							
						
					
					
						commit
						42103a8218
					
				
					 1 changed files with 19 additions and 18 deletions
				
			
		| 
						 | 
				
			
			@ -40,7 +40,7 @@ struct data {
 | 
			
		|||
	struct pw_core_proxy *core_proxy;
 | 
			
		||||
	struct spa_hook core_listener;
 | 
			
		||||
 | 
			
		||||
	struct pw_node *node;
 | 
			
		||||
	struct spa_node *node;
 | 
			
		||||
	const char *library;
 | 
			
		||||
	const char *factory;
 | 
			
		||||
	const char *path;
 | 
			
		||||
| 
						 | 
				
			
			@ -67,32 +67,33 @@ static const struct pw_node_proxy_events node_events = {
 | 
			
		|||
 | 
			
		||||
static int make_node(struct data *data)
 | 
			
		||||
{
 | 
			
		||||
	struct pw_factory *factory;
 | 
			
		||||
	struct pw_properties *props;
 | 
			
		||||
 | 
			
		||||
        factory = pw_core_find_factory(data->core, "spa-node-factory");
 | 
			
		||||
	if (factory == NULL)
 | 
			
		||||
		return -1;
 | 
			
		||||
	struct spa_handle *hndl;
 | 
			
		||||
	void *iface;
 | 
			
		||||
	int res;
 | 
			
		||||
 | 
			
		||||
        props = pw_properties_new(SPA_KEY_LIBRARY_NAME, data->library,
 | 
			
		||||
                                  SPA_KEY_FACTORY_NAME, data->factory, NULL);
 | 
			
		||||
                                  SPA_KEY_FACTORY_NAME, data->factory,
 | 
			
		||||
				  NULL);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	hndl = pw_core_load_spa_handle(data->core, data->factory, &props->dict);
 | 
			
		||||
	if (hndl == NULL)
 | 
			
		||||
		return -errno;
 | 
			
		||||
 | 
			
		||||
	if ((res = spa_handle_get_interface(hndl, SPA_TYPE_INTERFACE_Node, &iface)) < 0)
 | 
			
		||||
		return res;
 | 
			
		||||
 | 
			
		||||
	data->node = iface;
 | 
			
		||||
 | 
			
		||||
	if (data->path) {
 | 
			
		||||
		pw_properties_set(props, PW_KEY_NODE_AUTOCONNECT, "1");
 | 
			
		||||
		pw_properties_set(props, PW_KEY_NODE_TARGET, data->path);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
        data->node = pw_factory_create_object(factory,
 | 
			
		||||
					      NULL,
 | 
			
		||||
					      PW_TYPE_INTERFACE_Node,
 | 
			
		||||
					      PW_VERSION_NODE_PROXY,
 | 
			
		||||
					      props, SPA_ID_INVALID);
 | 
			
		||||
	if (data->node == NULL)
 | 
			
		||||
		return -errno;
 | 
			
		||||
 | 
			
		||||
	pw_node_set_active(data->node, true);
 | 
			
		||||
 | 
			
		||||
	data->proxy = pw_core_proxy_export(data->core_proxy, PW_TYPE_INTERFACE_Node, NULL, data->node, 0);
 | 
			
		||||
	data->proxy = pw_core_proxy_export(data->core_proxy,
 | 
			
		||||
			SPA_TYPE_INTERFACE_Node, props,
 | 
			
		||||
			data->node, 0);
 | 
			
		||||
	if (data->proxy == NULL)
 | 
			
		||||
		return -errno;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue