remote-node: remove IO_Buffers before releasing the mix

This is usually done by the link but because we are a remote node, we
manage the links ourselves.
This commit is contained in:
Wim Taymans 2023-06-21 18:38:21 +02:00
parent 2c5a3e9593
commit 74b6ab4288
2 changed files with 7 additions and 1 deletions

View file

@ -938,6 +938,9 @@ static void clear_mix(struct node_data *data, struct mix *mix)
{ {
pw_log_debug("port %p: mix clear %d.%d", mix->port, mix->port->port_id, mix->mix_id); pw_log_debug("port %p: mix clear %d.%d", mix->port, mix->port->port_id, mix->mix_id);
spa_node_port_set_io(mix->port->mix, mix->mix.port.direction,
mix->mix.port.port_id, SPA_IO_Buffers, NULL, 0);
spa_list_remove(&mix->link); spa_list_remove(&mix->link);
clear_buffers(data, mix); clear_buffers(data, mix);

View file

@ -664,8 +664,11 @@ int pw_impl_link_activate(struct pw_impl_link *this)
return res; return res;
if ((res = port_set_io(this, this->output, SPA_IO_Buffers, this->io, if ((res = port_set_io(this, this->output, SPA_IO_Buffers, this->io,
sizeof(struct spa_io_buffers), &this->rt.out_mix)) < 0) sizeof(struct spa_io_buffers), &this->rt.out_mix)) < 0) {
port_set_io(this, this->input, SPA_IO_Buffers, NULL, 0,
&this->rt.in_mix);
return res; return res;
}
pw_loop_invoke(this->output->node->data_loop, pw_loop_invoke(this->output->node->data_loop,
do_activate_link, SPA_ID_INVALID, NULL, 0, false, this); do_activate_link, SPA_ID_INVALID, NULL, 0, false, this);