mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-10-29 05:40:27 -04:00
impl-node: only update the trigger node state once
Don't increment the required activation count every time we change the node prorties with a TRIGGER property. Only increment/decrement when the value actually changed.
This commit is contained in:
parent
08642adddc
commit
8fca3808d8
2 changed files with 11 additions and 3 deletions
|
|
@ -895,7 +895,7 @@ static void check_properties(struct pw_impl_node *node)
|
|||
const char *str, *recalc_reason = NULL;
|
||||
struct spa_fraction frac;
|
||||
uint32_t value;
|
||||
bool driver;
|
||||
bool driver, trigger;
|
||||
|
||||
if ((str = pw_properties_get(node->properties, PW_KEY_PRIORITY_DRIVER))) {
|
||||
node->priority_driver = pw_properties_parse_int(str);
|
||||
|
|
@ -928,8 +928,14 @@ static void check_properties(struct pw_impl_node *node)
|
|||
}
|
||||
|
||||
/* not scheduled automatically so we add an additional required trigger */
|
||||
if (pw_properties_get_bool(node->properties, PW_KEY_NODE_TRIGGER, false))
|
||||
node->rt.activation->state[0].required++;
|
||||
trigger = pw_properties_get_bool(node->properties, PW_KEY_NODE_TRIGGER, false);
|
||||
if (trigger != node->trigger) {
|
||||
node->trigger = trigger;
|
||||
if (trigger)
|
||||
node->rt.activation->state[0].required++;
|
||||
else
|
||||
node->rt.activation->state[0].required--;
|
||||
}
|
||||
|
||||
/* group defines what nodes are scheduled together */
|
||||
str = pw_properties_get(node->properties, PW_KEY_NODE_GROUP);
|
||||
|
|
|
|||
|
|
@ -703,6 +703,8 @@ struct pw_impl_node {
|
|||
unsigned int suspend_on_idle:1;
|
||||
unsigned int reconfigure:1;
|
||||
unsigned int forced_rate:1;
|
||||
unsigned int trigger:1; /**< has the TRIGGER property and needs an extra
|
||||
* trigger to start processing. */
|
||||
|
||||
uint32_t port_user_data_size; /**< extra size for port user data */
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue