mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-10-29 05:40:27 -04:00
impl-link: keep on negotiatiating until fixed Format
Send unfixed Format to nodes but don't proceed to the next state. When EnumFormat is emited, change the link state back to INIT to restart the negotiation. Fixes #1732
This commit is contained in:
parent
6cea8b201b
commit
0568958856
2 changed files with 6 additions and 2 deletions
|
|
@ -916,8 +916,6 @@ static void port_param_changed(struct pw_impl_link *this, uint32_t id,
|
|||
case SPA_PARAM_EnumFormat:
|
||||
target = PW_IMPL_PORT_STATE_CONFIGURE;
|
||||
break;
|
||||
case SPA_PARAM_Latency:
|
||||
return;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
|
|
@ -926,6 +924,8 @@ static void port_param_changed(struct pw_impl_link *this, uint32_t id,
|
|||
if (inport)
|
||||
pw_impl_port_update_state(inport, target, 0, NULL);
|
||||
|
||||
this->preparing = this->prepared = false;
|
||||
link_update_state(this, PW_LINK_STATE_INIT, 0, NULL);
|
||||
pw_impl_link_prepare(this);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1419,6 +1419,10 @@ int pw_impl_port_set_param(struct pw_impl_port *port, uint32_t id, uint32_t flag
|
|||
if (param == NULL || res < 0) {
|
||||
pw_impl_port_update_state(port, PW_IMPL_PORT_STATE_CONFIGURE, 0, NULL);
|
||||
}
|
||||
else if (spa_pod_is_fixated(param) <= 0) {
|
||||
pw_impl_port_update_state(port, PW_IMPL_PORT_STATE_CONFIGURE, 0, NULL);
|
||||
pw_impl_port_emit_param_changed(port, id);
|
||||
}
|
||||
else if (!SPA_RESULT_IS_ASYNC(res)) {
|
||||
pw_impl_port_update_state(port, PW_IMPL_PORT_STATE_READY, 0, NULL);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue