mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-20 06:59:58 -05:00
link: only start node when all links are ready
This commit is contained in:
parent
c9f7439b52
commit
a096e6d9c9
2 changed files with 12 additions and 3 deletions
|
|
@ -128,9 +128,11 @@ static void pw_link_update_state(struct pw_link *link, enum pw_link_state state,
|
||||||
debug_link(link);
|
debug_link(link);
|
||||||
|
|
||||||
if (old != PW_LINK_STATE_PAUSED && state == PW_LINK_STATE_PAUSED) {
|
if (old != PW_LINK_STATE_PAUSED && state == PW_LINK_STATE_PAUSED) {
|
||||||
if (++out->n_ready_output_links == out->n_used_output_links)
|
if (++out->n_ready_output_links == out->n_used_output_links &&
|
||||||
|
out->n_ready_input_links == out->n_used_input_links)
|
||||||
pw_node_set_state(out, PW_NODE_STATE_RUNNING);
|
pw_node_set_state(out, PW_NODE_STATE_RUNNING);
|
||||||
if (++in->n_ready_input_links == in->n_used_input_links)
|
if (++in->n_ready_input_links == in->n_used_input_links &&
|
||||||
|
in->n_ready_output_links == in->n_used_output_links)
|
||||||
pw_node_set_state(in, PW_NODE_STATE_RUNNING);
|
pw_node_set_state(in, PW_NODE_STATE_RUNNING);
|
||||||
pw_link_activate(link);
|
pw_link_activate(link);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -142,7 +142,14 @@ static int start_node(struct pw_node *this)
|
||||||
if (this->info.state >= PW_NODE_STATE_RUNNING)
|
if (this->info.state >= PW_NODE_STATE_RUNNING)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
pw_log_debug("node %p: start node", this);
|
pw_log_debug("node %p: start node %d %d %d %d", this, this->n_ready_output_links,
|
||||||
|
this->n_used_output_links, this->n_ready_input_links,
|
||||||
|
this->n_used_input_links);
|
||||||
|
|
||||||
|
if (this->n_ready_output_links != this->n_used_output_links ||
|
||||||
|
this->n_ready_input_links != this->n_used_input_links)
|
||||||
|
return 0;
|
||||||
|
|
||||||
res = spa_node_send_command(this->node,
|
res = spa_node_send_command(this->node,
|
||||||
&SPA_NODE_COMMAND_INIT(SPA_NODE_COMMAND_Start));
|
&SPA_NODE_COMMAND_INIT(SPA_NODE_COMMAND_Start));
|
||||||
if (res < 0)
|
if (res < 0)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue