Refresh screen on reader exit to heal ghosting

This commit is contained in:
jpirnay
2026-04-07 22:10:17 +02:00
parent fb331ae122
commit 16fd0bbba1
4 changed files with 12 additions and 0 deletions
@@ -185,6 +185,7 @@ void EpubReaderActivity::loop() {
// Long press BACK (1s+) goes to home screen
if (mappedInput.isPressed(MappedInputManager::Button::Back) && mappedInput.getHeldTime() >= ReaderUtils::GO_HOME_MS) {
ReaderUtils::enforceExitFullRefresh(renderer);
onGoHome();
return;
}
@@ -196,6 +197,7 @@ void EpubReaderActivity::loop() {
restoreSavedPosition();
return;
}
ReaderUtils::enforceExitFullRefresh(renderer);
finish();
return;
}
+6
View File
@@ -59,6 +59,12 @@ inline void displayWithRefreshCycle(const GfxRenderer& renderer, int& pagesUntil
}
}
inline void enforceExitFullRefresh(const GfxRenderer& renderer) {
// Reader exits can leave visible ghosting when the next screen is rendered with a fast LUT.
// Force one full waveform pass before leaving the reader stack.
renderer.displayBuffer(HalDisplay::FULL_REFRESH);
}
// Grayscale anti-aliasing pass. Renders content twice (LSB + MSB) to build
// the grayscale buffer. Only the content callback is re-rendered — status bars
// and other overlays should be drawn before calling this.
@@ -119,6 +119,7 @@ void TxtReaderActivity::onExit() {
void TxtReaderActivity::loop() {
// Long press BACK (1s+) goes to home screen
if (mappedInput.isPressed(MappedInputManager::Button::Back) && mappedInput.getHeldTime() >= ReaderUtils::GO_HOME_MS) {
ReaderUtils::enforceExitFullRefresh(renderer);
onGoHome();
return;
}
@@ -126,6 +127,7 @@ void TxtReaderActivity::loop() {
// Short press BACK returns to the calling activity
if (mappedInput.wasReleased(MappedInputManager::Button::Back) &&
mappedInput.getHeldTime() < ReaderUtils::GO_HOME_MS) {
ReaderUtils::enforceExitFullRefresh(renderer);
finish();
return;
}
@@ -73,12 +73,14 @@ void XtcReaderActivity::loop() {
// Long press BACK (1s+) goes to home screen
if (mappedInput.isPressed(MappedInputManager::Button::Back) && mappedInput.getHeldTime() >= goHomeMs) {
ReaderUtils::enforceExitFullRefresh(renderer);
onGoHome();
return;
}
// Short press BACK returns to the calling activity
if (mappedInput.wasReleased(MappedInputManager::Button::Back) && mappedInput.getHeldTime() < goHomeMs) {
ReaderUtils::enforceExitFullRefresh(renderer);
finish();
return;
}