Avoid UI hang

This commit is contained in:
jpirnay
2026-03-29 13:28:33 +02:00
parent 0e3c3daa74
commit ab0ec1454f
2 changed files with 21 additions and 18 deletions
+19 -18
View File
@@ -235,6 +235,18 @@ void KOReaderSyncActivity::onExit() {
wifiOff(); wifiOff();
} }
void KOReaderSyncActivity::closeCancelled() {
if (closeRequested) {
return;
}
closeRequested = true;
ActivityResult result;
result.isCancelled = true;
setResult(std::move(result));
finish();
}
void KOReaderSyncActivity::render(RenderLock&&) { void KOReaderSyncActivity::render(RenderLock&&) {
const auto pageWidth = renderer.getScreenWidth(); const auto pageWidth = renderer.getScreenWidth();
@@ -351,18 +363,13 @@ void KOReaderSyncActivity::render(RenderLock&&) {
void KOReaderSyncActivity::loop() { void KOReaderSyncActivity::loop() {
if (state == NO_CREDENTIALS || state == SYNC_FAILED || state == UPLOAD_COMPLETE) { if (state == NO_CREDENTIALS || state == SYNC_FAILED || state == UPLOAD_COMPLETE) {
if (state == UPLOAD_COMPLETE && millis() - uploadCompleteTime >= 3000) { if (mappedInput.wasReleased(MappedInputManager::Button::Back)) {
ActivityResult result; closeCancelled();
result.isCancelled = true;
setResult(std::move(result));
finish();
return; return;
} }
if (mappedInput.wasReleased(MappedInputManager::Button::Back)) {
ActivityResult result; if (state == UPLOAD_COMPLETE && millis() - uploadCompleteTime >= 3000) {
result.isCancelled = true; closeCancelled();
setResult(std::move(result));
finish();
} }
return; return;
} }
@@ -392,10 +399,7 @@ void KOReaderSyncActivity::loop() {
} }
if (mappedInput.wasReleased(MappedInputManager::Button::Back)) { if (mappedInput.wasReleased(MappedInputManager::Button::Back)) {
ActivityResult result; closeCancelled();
result.isCancelled = true;
setResult(std::move(result));
finish();
} }
return; return;
} }
@@ -414,10 +418,7 @@ void KOReaderSyncActivity::loop() {
} }
if (mappedInput.wasReleased(MappedInputManager::Button::Back)) { if (mappedInput.wasReleased(MappedInputManager::Button::Back)) {
ActivityResult result; closeCancelled();
result.isCancelled = true;
setResult(std::move(result));
finish();
} }
return; return;
} }
@@ -80,8 +80,10 @@ class KOReaderSyncActivity final : public Activity {
// Timestamp when UPLOAD_COMPLETE state was entered (for auto-close) // Timestamp when UPLOAD_COMPLETE state was entered (for auto-close)
unsigned long uploadCompleteTime = 0; unsigned long uploadCompleteTime = 0;
bool closeRequested = false;
void onWifiSelectionComplete(bool success); void onWifiSelectionComplete(bool success);
void performSync(); void performSync();
void performUpload(); void performUpload();
void closeCancelled();
}; };