perf(l2): choice popups open smoothly, switches never cut short by a rebuild

A popup over a still screen is frozen and dimmed as it opens, so the
panel's rise redraws only the panel: 6-8 frames of 19-25 ms instead of
3-4 of 45-65 ms. Picker options are one label each (time zone list
97 -> 52 ms to build). The bottom popup no longer animates a dim of 0.

Repeater updates its hint in place (130 ms rebuild gone); Auto power,
Imperial units and Relay on rebuild the screen after the knob has
moved (rebuildSoon). -D PERF_CONTROLS times every control on the
settings screens.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Jakub
2026-10-01 11:27:48 +02:00
co-authored by Claude Opus 5.5
parent 910a7c0197
commit 1125e9a13e
4 changed files with 281 additions and 47 deletions
@@ -131,7 +131,8 @@ void UITask::radioSet(int which, int v) {
case R_APC: p->tx_apc = (uint8_t)v; radioctl::applyApc(); break;
}
prefsSave();
rebuildRadio(); // preset name / hints follow
if (which == R_APC) rebuildSoon(&UITask::rebuildRadio); // the TX power hint follows
else rebuildRadio(); // preset name / hints follow
}
// Rebuilds the screen where it was scrolled to.