mirror of
				https://gitlab.freedesktop.org/pipewire/pipewire.git
				synced 2025-11-03 09:01:54 -05:00 
			
		
		
		
	impl-node: always INACTIVATE a node when stopping
Set the node state INACTIVE on the client and server side in all cases when stopping to ensure nothing tries to schedule the node anymore.
This commit is contained in:
		
							parent
							
								
									5afdd54277
								
							
						
					
					
						commit
						cc2c86a55b
					
				
					 2 changed files with 11 additions and 11 deletions
				
			
		| 
						 | 
				
			
			@ -222,15 +222,14 @@ do_node_unprepare(struct spa_loop *loop, bool async, uint32_t seq,
 | 
			
		|||
	pw_log_trace("%p: unprepare %d remote:%d exported:%d", this, this->rt.prepared,
 | 
			
		||||
			this->remote, this->exported);
 | 
			
		||||
 | 
			
		||||
	if (!this->exported) {
 | 
			
		||||
		/* We mark ourself as finished now, this will avoid going further into the process loop
 | 
			
		||||
		 * in case our fd was ready (removing ourselfs from the loop should avoid that as well).
 | 
			
		||||
		 * If we were supposed to be scheduled make sure we continue the graph for the peers we
 | 
			
		||||
		 * were supposed to trigger */
 | 
			
		||||
		old_state = SPA_ATOMIC_XCHG(this->rt.target.activation->status, PW_NODE_ACTIVATION_INACTIVE);
 | 
			
		||||
		if (PW_NODE_ACTIVATION_PENDING_TRIGGER(old_state))
 | 
			
		||||
			trigger = get_time_ns(this->rt.target.system);
 | 
			
		||||
	}
 | 
			
		||||
	/* We mark ourself as finished now, this will avoid going further into the process loop
 | 
			
		||||
	 * in case our fd was ready (removing ourselfs from the loop should avoid that as well).
 | 
			
		||||
	 * If we were supposed to be scheduled make sure we continue the graph for the peers we
 | 
			
		||||
	 * were supposed to trigger */
 | 
			
		||||
	old_state = SPA_ATOMIC_XCHG(this->rt.target.activation->status, PW_NODE_ACTIVATION_INACTIVE);
 | 
			
		||||
	if (PW_NODE_ACTIVATION_PENDING_TRIGGER(old_state))
 | 
			
		||||
		trigger = get_time_ns(this->rt.target.system);
 | 
			
		||||
 | 
			
		||||
	if (!this->rt.prepared)
 | 
			
		||||
		return 0;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue