Fix screensaver flicker: pause radar render/tick/status-line while active
Radar rendering, sweep tick, and status-line updates ran regardless of screensaver state, so each aircraft-update cycle or sweep tick repainted the full radar over the dimmed starfield while the clock kept redrawing on top - visible as flicker between the two. Both drawing blocks now skip entirely while screensaverShowing is true; updateProximityAlert() (LED/sound only, no display writes) keeps running unaffected. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
12
src/main.cpp
12
src/main.cpp
@@ -681,6 +681,15 @@ void loop() {
|
||||
}
|
||||
}
|
||||
|
||||
// Waehrend der Ruhebildschirm aktiv ist (screensaverShowing), duerfen
|
||||
// Radar-Rendering/Sweep/Statuszeile den Bildschirm NICHT mehr
|
||||
// ueberschreiben - sonst wuerde der naechste Aircraft-Update-Zyklus
|
||||
// (oder der Sweep-Tick) den gedimmten Sternenhimmel jederzeit wieder mit
|
||||
// dem vollen Radarbild uebermalen, waehrend gleichzeitig
|
||||
// drawScreensaverClock() im Sekundentakt seinen Streifen drueberzeichnet
|
||||
// - das Ergebnis war sichtbares Geflacker zwischen Radarbild und Uhr
|
||||
// statt eines ruhigen Sternenhimmels.
|
||||
if (!screensaverShowing) {
|
||||
if (forceRedraw || millis() - lastPollMs >= POLL_INTERVAL_MS) {
|
||||
lastPollMs = millis();
|
||||
uint32_t currentVersion = AircraftTable::version();
|
||||
@@ -691,11 +700,13 @@ void loop() {
|
||||
lastSweepMs = millis();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
uint32_t nowMs = millis();
|
||||
|
||||
RadarScreen::updateProximityAlert(nowMs);
|
||||
|
||||
if (!screensaverShowing) {
|
||||
if (nowMs - lastSweepMs >= SWEEP_TICK_MS) {
|
||||
uint32_t deltaMs = nowMs - lastSweepMs;
|
||||
lastSweepMs = nowMs;
|
||||
@@ -708,6 +719,7 @@ void loop() {
|
||||
updateStatusLine();
|
||||
updateNightDimming();
|
||||
}
|
||||
}
|
||||
|
||||
uint8_t timeoutMin = SettingsStore::screenTimeoutMinutes();
|
||||
if (!screenDimmed && timeoutMin > 0) {
|
||||
|
||||
Reference in New Issue
Block a user