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.
This commit is contained in:
Doğukan Korkmaztürk 2022-01-01 09:43:24 -05:00
parent 5054b48c9d
commit 3f87741b27

View file

@ -1180,21 +1180,22 @@ again:
running = !n->passive; running = !n->passive;
} }
if (force_rate)
lock_rate = false;
current_rate = n->current_rate.denom;
if (lock_rate ||
(!force_rate &&
(n->info.state > PW_NODE_STATE_IDLE)))
target_rate = current_rate;
else {
/* calculate desired rate */ /* calculate desired rate */
target_rate = def_rate; target_rate = def_rate;
if (rate.denom != 0 && rate.num == 1) { if (rate.denom != 0 && rate.num == 1) {
if (rates_contains(rates, n_rates, rate.denom)) if (rates_contains(rates, n_rates, rate.denom))
target_rate = 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))
target_rate = current_rate;
if (target_rate != current_rate) { if (target_rate != current_rate) {
pw_log_info("(%s-%u) state:%s new rate:%u->%u", pw_log_info("(%s-%u) state:%s new rate:%u->%u",