From 92337be649143fb82428219f0309171e145c8f6f Mon Sep 17 00:00:00 2001 From: Yaroslav Date: Thu, 22 Jan 2026 00:11:46 +0300 Subject: [PATCH] Don't change pages during skipping delay --- src/activities/reader/EpubReaderActivity.cpp | 7 +++++-- src/activities/reader/XtcReaderActivity.cpp | 6 +++++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/activities/reader/EpubReaderActivity.cpp b/src/activities/reader/EpubReaderActivity.cpp index 7ebc4443..1673d7d5 100644 --- a/src/activities/reader/EpubReaderActivity.cpp +++ b/src/activities/reader/EpubReaderActivity.cpp @@ -179,7 +179,7 @@ void EpubReaderActivity::loop() { delayedSkipDir = nextPressed ? +1 : -1; delayedSkipExecuteAtMs = millis() + 500; xSemaphoreGive(renderingMutex); - // Block release-based page change until unpressed + // Block changing page until unpressed skip button awaitingReleaseAfterSkip = true; return; } @@ -191,6 +191,10 @@ void EpubReaderActivity::loop() { mappedInput.wasReleased(MappedInputManager::Button::Power)) || mappedInput.wasReleased(MappedInputManager::Button::Right); + if (delayedSkipPending) { + return; + } + if (!prevReleased && !nextReleased) { return; } @@ -252,7 +256,6 @@ void EpubReaderActivity::displayTaskLoop() { renderScreen(); xSemaphoreGive(renderingMutex); } else if (delayedSkipPending && now >= delayedSkipExecuteAtMs) { - // Execute the delayed chapter skip now xSemaphoreTake(renderingMutex, portMAX_DELAY); nextPageNumber = 0; currentSpineIndex += delayedSkipDir; diff --git a/src/activities/reader/XtcReaderActivity.cpp b/src/activities/reader/XtcReaderActivity.cpp index 5251cc85..d1c69601 100644 --- a/src/activities/reader/XtcReaderActivity.cpp +++ b/src/activities/reader/XtcReaderActivity.cpp @@ -128,7 +128,7 @@ void XtcReaderActivity::loop() { delayedSkipAmount = 10; // long-press skip amount delayedSkipExecuteAtMs = millis() + 500; xSemaphoreGive(renderingMutex); - // Block release-based page change until unpressed + // Block changing page until unpressed skip button awaitingReleaseAfterSkip = true; return; } @@ -140,6 +140,10 @@ void XtcReaderActivity::loop() { mappedInput.wasReleased(MappedInputManager::Button::Power)) || mappedInput.wasReleased(MappedInputManager::Button::Right); + if (delayedSkipPending) { + return; + } + if (!prevReleased && !nextReleased) { return; }