mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-07 13:30:09 -05:00
filter-chain: accumulate node param changes
Don't just look at the last set parameter to decide if the node parameters changed but or all results together. Fixes #4331
This commit is contained in:
parent
546acfc006
commit
e82a02bd89
1 changed files with 4 additions and 2 deletions
|
|
@ -1087,13 +1087,15 @@ static int port_set_control_value(struct port *port, float *value, uint32_t id)
|
||||||
struct node *node = port->node;
|
struct node *node = port->node;
|
||||||
struct descriptor *desc = node->desc;
|
struct descriptor *desc = node->desc;
|
||||||
float old;
|
float old;
|
||||||
|
bool changed;
|
||||||
|
|
||||||
old = port->control_data[id];
|
old = port->control_data[id];
|
||||||
port->control_data[id] = value ? *value : desc->default_control[port->idx];
|
port->control_data[id] = value ? *value : desc->default_control[port->idx];
|
||||||
pw_log_info("control %d %d ('%s') from %f to %f", port->idx, id,
|
pw_log_info("control %d %d ('%s') from %f to %f", port->idx, id,
|
||||||
desc->desc->ports[port->p].name, old, port->control_data[id]);
|
desc->desc->ports[port->p].name, old, port->control_data[id]);
|
||||||
node->control_changed = old != port->control_data[id];
|
changed = old != port->control_data[id];
|
||||||
return node->control_changed ? 1 : 0;
|
node->control_changed |= changed;
|
||||||
|
return changed ? 1 : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int set_control_value(struct node *node, const char *name, float *value)
|
static int set_control_value(struct node *node, const char *name, float *value)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue