mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-05 13:30:02 -05:00
link: also unlink controls
This commit is contained in:
parent
857352e4a4
commit
089fc2e8c1
1 changed files with 22 additions and 0 deletions
|
|
@ -1255,6 +1255,26 @@ static void try_link_controls(struct impl *impl, struct pw_port *port, struct pw
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void try_unlink_controls(struct impl *impl, struct pw_port *port, struct pw_port *target)
|
||||||
|
{
|
||||||
|
struct pw_control *cin, *cout;
|
||||||
|
int res;
|
||||||
|
|
||||||
|
pw_log_debug("link %p: unlinking controls", impl);
|
||||||
|
spa_list_for_each(cout, &port->control_list[SPA_DIRECTION_OUTPUT], port_link) {
|
||||||
|
spa_list_for_each(cin, &target->control_list[SPA_DIRECTION_INPUT], port_link) {
|
||||||
|
if ((res = pw_control_unlink(cout, cin)) < 0)
|
||||||
|
pw_log_error("failed to unlink controls: %s", spa_strerror(res));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
spa_list_for_each(cin, &port->control_list[SPA_DIRECTION_INPUT], port_link) {
|
||||||
|
spa_list_for_each(cout, &target->control_list[SPA_DIRECTION_OUTPUT], port_link) {
|
||||||
|
if ((res = pw_control_unlink(cout, cin)) < 0)
|
||||||
|
pw_log_error("failed to unlink controls: %s", spa_strerror(res));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
struct pw_link *pw_link_new(struct pw_core *core,
|
struct pw_link *pw_link_new(struct pw_core *core,
|
||||||
struct pw_port *output,
|
struct pw_port *output,
|
||||||
struct pw_port *input,
|
struct pw_port *input,
|
||||||
|
|
@ -1437,6 +1457,8 @@ void pw_link_destroy(struct pw_link *link)
|
||||||
if (link->registered)
|
if (link->registered)
|
||||||
spa_list_remove(&link->link);
|
spa_list_remove(&link->link);
|
||||||
|
|
||||||
|
try_unlink_controls(impl, link->input, link->output);
|
||||||
|
|
||||||
input_remove(link, link->input);
|
input_remove(link, link->input);
|
||||||
output_remove(link, link->output);
|
output_remove(link, link->output);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue