From 3f87741b279987bba7a129e12172ad931703cd5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Do=C4=9Fukan=20Korkmazt=C3=BCrk?= Date: Sat, 1 Jan 2022 09:43:24 -0500 Subject: [PATCH] context: calculate target rate only when needed Instead of calculating the target rate and overriding it in some conditions, calculate it only if it is necessary. This change also eliminates a set of conditional branches that have the same outcome, which causes clang-tidy to produce a bugprone-branch-clone warning. --- src/pipewire/context.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/pipewire/context.c b/src/pipewire/context.c index a3551c2b8..f28369b30 100644 --- a/src/pipewire/context.c +++ b/src/pipewire/context.c @@ -1180,21 +1180,22 @@ again: running = !n->passive; } - /* calculate desired rate */ - target_rate = def_rate; - if (rate.denom != 0 && rate.num == 1) { - if (rates_contains(rates, n_rates, rate.denom)) - target_rate = rate.denom; - } if (force_rate) lock_rate = false; current_rate = n->current_rate.denom; - if (target_rate != current_rate && lock_rate) - target_rate = current_rate; - else if (target_rate != current_rate && !force_rate && - (n->info.state > PW_NODE_STATE_IDLE)) + if (lock_rate || + (!force_rate && + (n->info.state > PW_NODE_STATE_IDLE))) target_rate = current_rate; + else { + /* calculate desired rate */ + target_rate = def_rate; + if (rate.denom != 0 && rate.num == 1) { + if (rates_contains(rates, n_rates, rate.denom)) + target_rate = rate.denom; + } + } if (target_rate != current_rate) { pw_log_info("(%s-%u) state:%s new rate:%u->%u",