mirror of
				https://gitlab.freedesktop.org/pipewire/pipewire.git
				synced 2025-11-03 09:01:54 -05:00 
			
		
		
		
	impl-node: add more backwards compat
Make sure newer clients can work with an older server: - Add client and server versions in the activation - On older server, clients needs to trigger peers without CAS of status - On older server, jack transport is started with command. - Use client version to know when to set the INACTIVE/FINISHED state on the server instead. - Async clients need to trigger peers on old server.
This commit is contained in:
		
							parent
							
								
									2501b347ef
								
							
						
					
					
						commit
						a07f73ce82
					
				
					 5 changed files with 108 additions and 45 deletions
				
			
		| 
						 | 
				
			
			@ -1799,12 +1799,10 @@ struct pw_impl_client_node *pw_impl_client_node_new(struct pw_resource *resource
 | 
			
		|||
 | 
			
		||||
	this->node->remote = true;
 | 
			
		||||
	this->flags = 0;
 | 
			
		||||
	if (resource->version < 5) {
 | 
			
		||||
		pw_log_warn("using server side driver for old client version %d", resource->version);
 | 
			
		||||
	}
 | 
			
		||||
	if (resource->version < 6) {
 | 
			
		||||
		pw_log_warn("using server side status for old client version %d", resource->version);
 | 
			
		||||
		this->node->server_status = true;
 | 
			
		||||
	if (resource->version < PW_VERSION_CLIENT_NODE) {
 | 
			
		||||
		pw_log_warn("detected old client version %d", resource->version);
 | 
			
		||||
		if (resource->version < 6)
 | 
			
		||||
			this->node->rt.target.activation->client_version = 0;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	pw_resource_add_listener(this->resource,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -210,6 +210,8 @@ static int client_node_transport(void *_data,
 | 
			
		|||
	spa_system_close(node->rt.target.system, node->source.fd);
 | 
			
		||||
	node->rt.target.fd = node->source.fd = readfd;
 | 
			
		||||
 | 
			
		||||
	node->rt.target.activation->client_version = PW_VERSION_NODE_ACTIVATION;
 | 
			
		||||
 | 
			
		||||
	data->have_transport = true;
 | 
			
		||||
 | 
			
		||||
	if (node->active)
 | 
			
		||||
| 
						 | 
				
			
			@ -839,6 +841,8 @@ client_node_set_activation(void *_data,
 | 
			
		|||
		link->target.activation = ptr;
 | 
			
		||||
		link->target.system = data->data_system;
 | 
			
		||||
		link->target.fd = signalfd;
 | 
			
		||||
		link->target.trigger = link->target.activation->server_version < 1 ?
 | 
			
		||||
			trigger_target_v0 : trigger_target_v1;
 | 
			
		||||
		spa_list_append(&data->links, &link->link);
 | 
			
		||||
 | 
			
		||||
		pw_impl_node_add_target(node, &link->target);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue