mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-16 07:00:00 -05:00
impl-node: improve compatibility with older clients
Clients before version 1 don't update the active_driver_id and so we must do on the server ourselves or else the node will not be scheduled.
This commit is contained in:
parent
f160c86f6f
commit
b5d0532a77
1 changed files with 8 additions and 2 deletions
|
|
@ -812,7 +812,9 @@ int pw_impl_node_set_io(struct pw_impl_node *this, uint32_t id, void *data, size
|
|||
|
||||
res = spa_node_set_io(this->node, id, data, size);
|
||||
|
||||
if (res >= 0 && !SPA_RESULT_IS_ASYNC(res) && this->rt.position)
|
||||
if (this->rt.position &&
|
||||
((res >= 0 && !SPA_RESULT_IS_ASYNC(res)) ||
|
||||
this->rt.target.activation->client_version < 1))
|
||||
this->rt.target.activation->active_driver_id = this->rt.position->clock.id;
|
||||
|
||||
pw_log_debug("%p: set io: %s", this, spa_strerror(res));
|
||||
|
|
@ -2091,8 +2093,12 @@ again:
|
|||
retry_status:
|
||||
pw_node_activation_state_reset(&ta->state[0]);
|
||||
|
||||
if (ta->active_driver_id != ta->driver_id)
|
||||
if (ta->active_driver_id != ta->driver_id) {
|
||||
pw_log_trace_fp("%p: (%s-%u) %d waiting for driver %d<>%d", t->node,
|
||||
t->name, t->id, ta->status,
|
||||
ta->active_driver_id, ta->driver_id);
|
||||
continue;
|
||||
}
|
||||
|
||||
/* we don't change the state of inactive nodes and don't use them
|
||||
* for reposition. The pending will be at least 1 and they might
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue