Merge pull request #38 from jpirnay/fix-refreshonexit
fix: 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
|
// Long press BACK (1s+) goes to home screen
|
||||||
if (mappedInput.isPressed(MappedInputManager::Button::Back) && mappedInput.getHeldTime() >= ReaderUtils::GO_HOME_MS) {
|
if (mappedInput.isPressed(MappedInputManager::Button::Back) && mappedInput.getHeldTime() >= ReaderUtils::GO_HOME_MS) {
|
||||||
|
ReaderUtils::enforceExitFullRefresh(renderer);
|
||||||
onGoHome();
|
onGoHome();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -196,6 +197,7 @@ void EpubReaderActivity::loop() {
|
|||||||
restoreSavedPosition();
|
restoreSavedPosition();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
ReaderUtils::enforceExitFullRefresh(renderer);
|
||||||
finish();
|
finish();
|
||||||
return;
|
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
|
// Grayscale anti-aliasing pass. Renders content twice (LSB + MSB) to build
|
||||||
// the grayscale buffer. Only the content callback is re-rendered — status bars
|
// the grayscale buffer. Only the content callback is re-rendered — status bars
|
||||||
// and other overlays should be drawn before calling this.
|
// and other overlays should be drawn before calling this.
|
||||||
|
|||||||
@@ -119,6 +119,7 @@ void TxtReaderActivity::onExit() {
|
|||||||
void TxtReaderActivity::loop() {
|
void TxtReaderActivity::loop() {
|
||||||
// Long press BACK (1s+) goes to home screen
|
// Long press BACK (1s+) goes to home screen
|
||||||
if (mappedInput.isPressed(MappedInputManager::Button::Back) && mappedInput.getHeldTime() >= ReaderUtils::GO_HOME_MS) {
|
if (mappedInput.isPressed(MappedInputManager::Button::Back) && mappedInput.getHeldTime() >= ReaderUtils::GO_HOME_MS) {
|
||||||
|
ReaderUtils::enforceExitFullRefresh(renderer);
|
||||||
onGoHome();
|
onGoHome();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -126,6 +127,7 @@ void TxtReaderActivity::loop() {
|
|||||||
// Short press BACK returns to the calling activity
|
// Short press BACK returns to the calling activity
|
||||||
if (mappedInput.wasReleased(MappedInputManager::Button::Back) &&
|
if (mappedInput.wasReleased(MappedInputManager::Button::Back) &&
|
||||||
mappedInput.getHeldTime() < ReaderUtils::GO_HOME_MS) {
|
mappedInput.getHeldTime() < ReaderUtils::GO_HOME_MS) {
|
||||||
|
ReaderUtils::enforceExitFullRefresh(renderer);
|
||||||
finish();
|
finish();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,6 +15,7 @@
|
|||||||
#include "CrossPointSettings.h"
|
#include "CrossPointSettings.h"
|
||||||
#include "CrossPointState.h"
|
#include "CrossPointState.h"
|
||||||
#include "MappedInputManager.h"
|
#include "MappedInputManager.h"
|
||||||
|
#include "ReaderUtils.h"
|
||||||
#include "RecentBooksStore.h"
|
#include "RecentBooksStore.h"
|
||||||
#include "XtcReaderChapterSelectionActivity.h"
|
#include "XtcReaderChapterSelectionActivity.h"
|
||||||
#include "components/UITheme.h"
|
#include "components/UITheme.h"
|
||||||
@@ -73,12 +74,14 @@ void XtcReaderActivity::loop() {
|
|||||||
|
|
||||||
// Long press BACK (1s+) goes to home screen
|
// Long press BACK (1s+) goes to home screen
|
||||||
if (mappedInput.isPressed(MappedInputManager::Button::Back) && mappedInput.getHeldTime() >= goHomeMs) {
|
if (mappedInput.isPressed(MappedInputManager::Button::Back) && mappedInput.getHeldTime() >= goHomeMs) {
|
||||||
|
ReaderUtils::enforceExitFullRefresh(renderer);
|
||||||
onGoHome();
|
onGoHome();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Short press BACK returns to the calling activity
|
// Short press BACK returns to the calling activity
|
||||||
if (mappedInput.wasReleased(MappedInputManager::Button::Back) && mappedInput.getHeldTime() < goHomeMs) {
|
if (mappedInput.wasReleased(MappedInputManager::Button::Back) && mappedInput.getHeldTime() < goHomeMs) {
|
||||||
|
ReaderUtils::enforceExitFullRefresh(renderer);
|
||||||
finish();
|
finish();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user