mirror of
				https://gitlab.freedesktop.org/pipewire/pipewire.git
				synced 2025-11-03 09:01:54 -05:00 
			
		
		
		
	context: when force-quantum, remove lock-quantum
If a node (or metadata) forces a quantum, remove any nodes that requested a lock-quantum so that we can change the quantum to the new forced one. This makes it possible to run jack clients with node.lock-quantum while still allowing them to change the quantum qith node.force-quantum.
This commit is contained in:
		
							parent
							
								
									0b637c3291
								
							
						
					
					
						commit
						9acae229ab
					
				
					 1 changed files with 5 additions and 2 deletions
				
			
		| 
						 | 
				
			
			@ -1068,7 +1068,7 @@ int pw_context_recalc_graph(struct pw_context *context, const char *reason)
 | 
			
		|||
	struct pw_impl_node *n, *s, *target, *fallback;
 | 
			
		||||
	uint32_t max_quantum, min_quantum, def_quantum, lim_quantum, rate_quantum;
 | 
			
		||||
	uint32_t *rates, n_rates, def_rate;
 | 
			
		||||
	bool freewheel = false, global_force_rate, force_rate, global_force_quantum;
 | 
			
		||||
	bool freewheel = false, global_force_rate, force_rate, force_quantum, global_force_quantum;
 | 
			
		||||
 | 
			
		||||
	pw_log_info("%p: busy:%d reason:%s", context, impl->recalc, reason);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1083,7 +1083,7 @@ again:
 | 
			
		|||
	get_quantums(context, &def_quantum, &min_quantum, &max_quantum, &lim_quantum, &rate_quantum);
 | 
			
		||||
	rates = get_rates(context, &def_rate, &n_rates, &global_force_rate);
 | 
			
		||||
 | 
			
		||||
	global_force_quantum = rate_quantum == 0;
 | 
			
		||||
	force_quantum = global_force_quantum = rate_quantum == 0;
 | 
			
		||||
	force_rate = global_force_rate;
 | 
			
		||||
 | 
			
		||||
	/* start from all drivers and group all nodes that are linked
 | 
			
		||||
| 
						 | 
				
			
			@ -1183,6 +1183,7 @@ again:
 | 
			
		|||
				def_quantum = min_quantum = max_quantum = s->force_quantum;
 | 
			
		||||
				rate_quantum = 0;
 | 
			
		||||
				quantum_stamp = s->stamp;
 | 
			
		||||
				force_quantum = true;
 | 
			
		||||
			}
 | 
			
		||||
			if (!global_force_rate && s->force_rate > 0 &&
 | 
			
		||||
			    s->stamp > rate_stamp) {
 | 
			
		||||
| 
						 | 
				
			
			@ -1213,6 +1214,8 @@ again:
 | 
			
		|||
				running = !n->passive;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if (force_quantum)
 | 
			
		||||
			lock_quantum = false;
 | 
			
		||||
		if (force_rate)
 | 
			
		||||
			lock_rate = false;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue