mirror of
				https://gitlab.freedesktop.org/pipewire/pipewire.git
				synced 2025-11-03 09:01:54 -05:00 
			
		
		
		
	impl-node: Split ALWAYS_PROCESS and WANT_DRIVER handling
Make a new PW_KEY_NODE_WANT_DRIVER to assign the node to a running driver. (does not work yet) Use a new variable to hold the ALWAYS_PROCESS setting and also update want_driver. This makes things it a bit more future proof.
This commit is contained in:
		
							parent
							
								
									62fa0823ec
								
							
						
					
					
						commit
						d1905716e4
					
				
					 3 changed files with 17 additions and 16 deletions
				
			
		| 
						 | 
					@ -831,20 +831,14 @@ static void check_properties(struct pw_impl_node *node)
 | 
				
			||||||
		pw_log_debug(NAME" %p: name '%s'", node, node->name);
 | 
							pw_log_debug(NAME" %p: name '%s'", node, node->name);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if ((str = pw_properties_get(node->properties, PW_KEY_NODE_PAUSE_ON_IDLE)))
 | 
						str = pw_properties_get(node->properties, PW_KEY_NODE_PAUSE_ON_IDLE);
 | 
				
			||||||
		impl->pause_on_idle = pw_properties_parse_bool(str);
 | 
						impl->pause_on_idle = str ? pw_properties_parse_bool(str) : true;
 | 
				
			||||||
	else
 | 
					 | 
				
			||||||
		impl->pause_on_idle = true;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if ((str = pw_properties_get(node->properties, PW_KEY_NODE_CACHE_PARAMS)))
 | 
						str = pw_properties_get(node->properties, PW_KEY_NODE_CACHE_PARAMS);
 | 
				
			||||||
		impl->cache_params = pw_properties_parse_bool(str);
 | 
						impl->cache_params = str ? pw_properties_parse_bool(str) : true;
 | 
				
			||||||
	else
 | 
					 | 
				
			||||||
		impl->cache_params = true;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if ((str = pw_properties_get(node->properties, PW_KEY_NODE_DRIVER)))
 | 
						str = pw_properties_get(node->properties, PW_KEY_NODE_DRIVER);
 | 
				
			||||||
		driver = pw_properties_parse_bool(str);
 | 
						driver = str ? pw_properties_parse_bool(str) : false;
 | 
				
			||||||
	else
 | 
					 | 
				
			||||||
		driver = false;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (node->driver != driver) {
 | 
						if (node->driver != driver) {
 | 
				
			||||||
		pw_log_debug(NAME" %p: driver %d -> %d", node, node->driver, driver);
 | 
							pw_log_debug(NAME" %p: driver %d -> %d", node, node->driver, driver);
 | 
				
			||||||
| 
						 | 
					@ -869,10 +863,14 @@ static void check_properties(struct pw_impl_node *node)
 | 
				
			||||||
		recalc_reason = "group changed";
 | 
							recalc_reason = "group changed";
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if ((str = pw_properties_get(node->properties, PW_KEY_NODE_ALWAYS_PROCESS)))
 | 
						str = pw_properties_get(node->properties, PW_KEY_NODE_WANT_DRIVER);
 | 
				
			||||||
		node->want_driver = pw_properties_parse_bool(str);
 | 
						node->want_driver = str ? pw_properties_parse_bool(str) : false;
 | 
				
			||||||
	else
 | 
					
 | 
				
			||||||
		node->want_driver = false;
 | 
						str = pw_properties_get(node->properties, PW_KEY_NODE_ALWAYS_PROCESS);
 | 
				
			||||||
 | 
						node->always_process = str ? pw_properties_parse_bool(str) : false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (node->always_process)
 | 
				
			||||||
 | 
							node->want_driver = true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if ((str = pw_properties_get(node->properties, PW_KEY_NODE_LATENCY))) {
 | 
						if ((str = pw_properties_get(node->properties, PW_KEY_NODE_LATENCY))) {
 | 
				
			||||||
		uint32_t num, denom;
 | 
							uint32_t num, denom;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -157,6 +157,8 @@ extern "C" {
 | 
				
			||||||
								  *  node as a fraction. Ex: 1024/48000 */
 | 
													  *  node as a fraction. Ex: 1024/48000 */
 | 
				
			||||||
#define PW_KEY_NODE_DONT_RECONNECT	"node.dont-reconnect"	/**< don't reconnect this node */
 | 
					#define PW_KEY_NODE_DONT_RECONNECT	"node.dont-reconnect"	/**< don't reconnect this node */
 | 
				
			||||||
#define PW_KEY_NODE_ALWAYS_PROCESS	"node.always-process"	/**< process even when unlinked */
 | 
					#define PW_KEY_NODE_ALWAYS_PROCESS	"node.always-process"	/**< process even when unlinked */
 | 
				
			||||||
 | 
					#define PW_KEY_NODE_WANT_DRIVER		"node.want-driver"	/**< the node wants to be grouped with a driver
 | 
				
			||||||
 | 
													  *  node in order to schedule the graph. */
 | 
				
			||||||
#define PW_KEY_NODE_PAUSE_ON_IDLE	"node.pause-on-idle"	/**< pause the node when idle */
 | 
					#define PW_KEY_NODE_PAUSE_ON_IDLE	"node.pause-on-idle"	/**< pause the node when idle */
 | 
				
			||||||
#define PW_KEY_NODE_CACHE_PARAMS	"node.cache-params"	/**< cache the node params */
 | 
					#define PW_KEY_NODE_CACHE_PARAMS	"node.cache-params"	/**< cache the node params */
 | 
				
			||||||
#define PW_KEY_NODE_DRIVER		"node.driver"		/**< node can drive the graph */
 | 
					#define PW_KEY_NODE_DRIVER		"node.driver"		/**< node can drive the graph */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -673,6 +673,7 @@ struct pw_impl_node {
 | 
				
			||||||
	unsigned int passive:1;		/**< driver graph only has passive links */
 | 
						unsigned int passive:1;		/**< driver graph only has passive links */
 | 
				
			||||||
	unsigned int freewheel:1;	/**< if this is the freewheel driver */
 | 
						unsigned int freewheel:1;	/**< if this is the freewheel driver */
 | 
				
			||||||
	unsigned int loopchecked:1;	/**< for feedback loop checking */
 | 
						unsigned int loopchecked:1;	/**< for feedback loop checking */
 | 
				
			||||||
 | 
						unsigned int always_process:1;	/**< this node wants to always be processing, even when idle */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	uint32_t port_user_data_size;	/**< extra size for port user data */
 | 
						uint32_t port_user_data_size;	/**< extra size for port user data */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue