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:
Wim Taymans 2024-06-17 12:07:09 +02:00
parent 2501b347ef
commit a07f73ce82
5 changed files with 108 additions and 45 deletions

View file

@ -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,