Merge pull request #38 from jpirnay/fix-refreshonexit

fix: Refresh screen on reader exit to heal ghosting
This commit is contained in:
jpirnay
2026-04-07 22:31:11 +02:00
committed by GitHub
4 changed files with 13 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;
}
@@ -15,6 +15,7 @@
#include "CrossPointSettings.h"
#include "CrossPointState.h"
#include "MappedInputManager.h"
#include "ReaderUtils.h"
#include "RecentBooksStore.h"
#include "XtcReaderChapterSelectionActivity.h"
#include "components/UITheme.h"
@@ -73,12 +74,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;
}