revert(eink): drop full refresh on screen change — too much black-flash

A full (non-partial) refresh on every screen change (638eea7b) turned out to be
far too aggressive on real e-ink hardware: every navigation black-flashes,
which is worse than the ghosting it was clearing. Remove the whole mechanism —
DisplayDriver::forceFullRefresh() virtual, GxEPDDisplay's _force_full flag and
override, the endFrame() branch, and the setCurrScreen() call. E-ink is back to
interval-only full refreshes (Settings > Full refresh interval).

The favourites "(gone)"-tile prune that shipped in the same commit is kept.

Builds green: WioTrackerL1Eink_companion_solo_dual.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Jakub
2026-07-06 20:58:51 +02:00
parent 51a0c46828
commit 8d8eace99c
5 changed files with 1 additions and 13 deletions

View File

@@ -275,14 +275,10 @@ void GxEPDDisplay::endFrame() {
uint32_t crc = display_crc.finalize();
if (crc != last_display_crc_value) {
bool partial = true;
// A forced full refresh (e.g. screen change) clears inter-screen ghosting.
// Short-circuit so _partial_count isn't bumped on the forced pass; the block
// resets it either way, matching the interval-driven full refresh.
if (_force_full || (_full_refresh_interval > 0 && ++_partial_count >= _full_refresh_interval)) {
if (_full_refresh_interval > 0 && ++_partial_count >= _full_refresh_interval) {
partial = false;
_partial_count = 0;
}
_force_full = false;
display.display(partial);
last_display_crc_value = crc;
}