Refresh screen on reader exit to heal ghosting
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user