Avoid UI hang
This commit is contained in:
@@ -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();
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user