From e82a02bd896341b64ae199d2cfb32200bfb35532 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Tue, 1 Oct 2024 19:04:02 +0200 Subject: [PATCH] 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 --- src/modules/module-filter-chain.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/modules/module-filter-chain.c b/src/modules/module-filter-chain.c index 457294321..3f50846c5 100644 --- a/src/modules/module-filter-chain.c +++ b/src/modules/module-filter-chain.c @@ -1087,13 +1087,15 @@ static int port_set_control_value(struct port *port, float *value, uint32_t id) struct node *node = port->node; struct descriptor *desc = node->desc; float old; + bool changed; old = port->control_data[id]; 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, desc->desc->ports[port->p].name, old, port->control_data[id]); - node->control_changed = old != port->control_data[id]; - return node->control_changed ? 1 : 0; + changed = old != port->control_data[id]; + node->control_changed |= changed; + return changed ? 1 : 0; } static int set_control_value(struct node *node, const char *name, float *value)