diff options
author | Jerry Zhang <zhangjerry@google.com> | 2018-05-22 21:08:35 +0200 |
---|---|---|
committer | Hridya Valsaraju <hridya@google.com> | 2018-07-30 22:17:27 +0200 |
commit | b76af93ab56bc3296e01e65a6fe64a0622ab5b91 (patch) | |
tree | 72a598a84fa4bb141873c59ec979e9660e1c2428 /screen_ui.cpp | |
parent | Merge "minadbd: avoid overrriding services_to_fd." (diff) | |
download | android_bootable_recovery-b76af93ab56bc3296e01e65a6fe64a0622ab5b91.tar android_bootable_recovery-b76af93ab56bc3296e01e65a6fe64a0622ab5b91.tar.gz android_bootable_recovery-b76af93ab56bc3296e01e65a6fe64a0622ab5b91.tar.bz2 android_bootable_recovery-b76af93ab56bc3296e01e65a6fe64a0622ab5b91.tar.lz android_bootable_recovery-b76af93ab56bc3296e01e65a6fe64a0622ab5b91.tar.xz android_bootable_recovery-b76af93ab56bc3296e01e65a6fe64a0622ab5b91.tar.zst android_bootable_recovery-b76af93ab56bc3296e01e65a6fe64a0622ab5b91.zip |
Diffstat (limited to 'screen_ui.cpp')
-rw-r--r-- | screen_ui.cpp | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/screen_ui.cpp b/screen_ui.cpp index f9c4a06c1..c14f29d49 100644 --- a/screen_ui.cpp +++ b/screen_ui.cpp @@ -417,6 +417,7 @@ void ScreenRecoveryUI::CheckBackgroundTextImages() { FlushKeys(); while (true) { int key = WaitKey(); + if (key == static_cast<int>(KeyError::INTERRUPTED)) break; if (key == KEY_POWER || key == KEY_ENTER) { break; } else if (key == KEY_UP || key == KEY_VOLUMEUP) { @@ -925,6 +926,7 @@ void ScreenRecoveryUI::ShowFile(FILE* fp) { while (show_prompt) { show_prompt = false; int key = WaitKey(); + if (key == static_cast<int>(KeyError::INTERRUPTED)) return; if (key == KEY_POWER || key == KEY_ENTER) { return; } else if (key == KEY_UP || key == KEY_VOLUMEUP) { @@ -1017,19 +1019,26 @@ size_t ScreenRecoveryUI::ShowMenu(const std::vector<std::string>& headers, // Throw away keys pressed previously, so user doesn't accidentally trigger menu items. FlushKeys(); + // If there is a key interrupt in progress, return KeyError::INTERRUPTED without starting the + // menu. + if (IsKeyInterrupted()) return static_cast<size_t>(KeyError::INTERRUPTED); + StartMenu(headers, items, initial_selection); int selected = initial_selection; int chosen_item = -1; while (chosen_item < 0) { int key = WaitKey(); - if (key == -1) { // WaitKey() timed out. + if (key == static_cast<int>(KeyError::INTERRUPTED)) { // WaitKey() was interrupted. + return static_cast<size_t>(KeyError::INTERRUPTED); + } + if (key == static_cast<int>(KeyError::TIMED_OUT)) { // WaitKey() timed out. if (WasTextEverVisible()) { continue; } else { LOG(INFO) << "Timed out waiting for key input; rebooting."; EndMenu(); - return static_cast<size_t>(-1); + return static_cast<size_t>(KeyError::TIMED_OUT); } } |