diff --git a/src/modules/module-client-node/remote-node.c b/src/modules/module-client-node/remote-node.c index 0d8791116..b3a13d2d0 100644 --- a/src/modules/module-client-node/remote-node.c +++ b/src/modules/module-client-node/remote-node.c @@ -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); + 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); clear_buffers(data, mix); diff --git a/src/pipewire/impl-link.c b/src/pipewire/impl-link.c index 01707cd8d..10ae675d8 100644 --- a/src/pipewire/impl-link.c +++ b/src/pipewire/impl-link.c @@ -664,8 +664,11 @@ int pw_impl_link_activate(struct pw_impl_link *this) return res; 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; + } pw_loop_invoke(this->output->node->data_loop, do_activate_link, SPA_ID_INVALID, NULL, 0, false, this);