mirror of
				https://gitlab.freedesktop.org/pipewire/pipewire.git
				synced 2025-11-03 09:01:54 -05:00 
			
		
		
		
	node: add option to not register a node
This commit is contained in:
		
							parent
							
								
									fa07400c2e
								
							
						
					
					
						commit
						efa35c2911
					
				
					 6 changed files with 23 additions and 8 deletions
				
			
		| 
						 | 
				
			
			@ -1298,7 +1298,8 @@ static const struct pw_resource_events resource_events = {
 | 
			
		|||
 * \memberof pw_client_node
 | 
			
		||||
 */
 | 
			
		||||
struct pw_client_node *pw_client_node_new(struct pw_resource *resource,
 | 
			
		||||
					  struct pw_properties *properties)
 | 
			
		||||
					  struct pw_properties *properties,
 | 
			
		||||
					  bool do_register)
 | 
			
		||||
{
 | 
			
		||||
	struct impl *impl;
 | 
			
		||||
	struct pw_client_node *this;
 | 
			
		||||
| 
						 | 
				
			
			@ -1335,7 +1336,8 @@ struct pw_client_node *pw_client_node_new(struct pw_resource *resource,
 | 
			
		|||
				     pw_resource_get_client(this->resource),
 | 
			
		||||
				     NULL,
 | 
			
		||||
				     name,
 | 
			
		||||
				     PW_SPA_NODE_FLAG_ASYNC,
 | 
			
		||||
				     PW_SPA_NODE_FLAG_ASYNC |
 | 
			
		||||
				     (do_register ? 0 : PW_SPA_NODE_FLAG_NO_REGISTER),
 | 
			
		||||
				     &impl->node.node,
 | 
			
		||||
				     NULL,
 | 
			
		||||
				     properties, 0);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -39,7 +39,8 @@ struct pw_client_node {
 | 
			
		|||
 | 
			
		||||
struct pw_client_node *
 | 
			
		||||
pw_client_node_new(struct pw_resource *resource,
 | 
			
		||||
		   struct pw_properties *properties);
 | 
			
		||||
		   struct pw_properties *properties,
 | 
			
		||||
		   bool do_register);
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
pw_client_node_destroy(struct pw_client_node *node);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -75,10 +75,16 @@ static void pw_spa_node_destroy(void *data)
 | 
			
		|||
static void complete_init(struct impl *impl)
 | 
			
		||||
{
 | 
			
		||||
        struct pw_node *this = impl->this;
 | 
			
		||||
	if (impl->flags & PW_SPA_NODE_FLAG_DISABLE)
 | 
			
		||||
 | 
			
		||||
	if (SPA_FLAG_CHECK(impl->flags, PW_SPA_NODE_FLAG_DISABLE))
 | 
			
		||||
		pw_node_set_enabled(this, false);
 | 
			
		||||
 | 
			
		||||
	if (!SPA_FLAG_CHECK(impl->flags, PW_SPA_NODE_FLAG_NO_REGISTER))
 | 
			
		||||
		pw_node_register(this, impl->owner, impl->parent, NULL);
 | 
			
		||||
	if (impl->flags & PW_SPA_NODE_FLAG_ACTIVATE)
 | 
			
		||||
	else
 | 
			
		||||
		pw_node_initialized(this);
 | 
			
		||||
 | 
			
		||||
	if (SPA_FLAG_CHECK(impl->flags, PW_SPA_NODE_FLAG_ACTIVATE))
 | 
			
		||||
		pw_node_set_active(this, true);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -34,6 +34,7 @@ enum pw_spa_node_flags {
 | 
			
		|||
	PW_SPA_NODE_FLAG_ASYNC		= (1 << 0),
 | 
			
		||||
	PW_SPA_NODE_FLAG_DISABLE	= (1 << 1),
 | 
			
		||||
	PW_SPA_NODE_FLAG_ACTIVATE	= (1 << 2),
 | 
			
		||||
	PW_SPA_NODE_FLAG_NO_REGISTER	= (1 << 3),
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
struct pw_node *
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -383,10 +383,13 @@ int pw_node_register(struct pw_node *this,
 | 
			
		|||
		pw_port_register(port, owner, this->global,
 | 
			
		||||
				 pw_properties_copy(port->properties));
 | 
			
		||||
 | 
			
		||||
	return pw_node_initialized(this);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int pw_node_initialized(struct pw_node *this)
 | 
			
		||||
{
 | 
			
		||||
	spa_hook_list_call(&this->listener_list, struct pw_node_events, initialized);
 | 
			
		||||
 | 
			
		||||
	pw_node_update_state(this, PW_NODE_STATE_SUSPENDED, NULL);
 | 
			
		||||
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -599,6 +599,8 @@ void pw_node_update_state(struct pw_node *node, enum pw_node_state state, char *
 | 
			
		|||
 | 
			
		||||
int pw_node_update_ports(struct pw_node *node);
 | 
			
		||||
 | 
			
		||||
int pw_node_initialized(struct pw_node *node);
 | 
			
		||||
 | 
			
		||||
/** Activate a link \memberof pw_link
 | 
			
		||||
  * Starts the negotiation of formats and buffers on \a link and then
 | 
			
		||||
  * starts data streaming */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue