Merge "ui: Check for bootreason=recovery_ui."
am: f49cc02e86
Change-Id: I75d4f38e9842b24e01027523fa765feca8c8cc25
This commit is contained in:
20
ui.cpp
20
ui.cpp
@@ -69,6 +69,7 @@ RecoveryUI::RecoveryUI()
|
||||
has_down_key(false),
|
||||
has_touch_screen(false),
|
||||
touch_slot_(0),
|
||||
is_bootreason_recovery_ui_(false),
|
||||
screensaver_state_(ScreensaverState::DISABLED) {
|
||||
pthread_mutex_init(&key_queue_mutex, nullptr);
|
||||
pthread_cond_init(&key_queue_cond, nullptr);
|
||||
@@ -142,6 +143,19 @@ bool RecoveryUI::Init(const std::string& locale) {
|
||||
|
||||
if (touch_screen_allowed_) {
|
||||
ev_iterate_touch_inputs(std::bind(&RecoveryUI::OnKeyDetected, this, std::placeholders::_1));
|
||||
|
||||
// Parse /proc/cmdline to determine if it's booting into recovery with a bootreason of
|
||||
// "recovery_ui". This specific reason is set by some (wear) bootloaders, to allow an easier way
|
||||
// to turn on text mode. It will only be set if the recovery boot is triggered from fastboot, or
|
||||
// with 'adb reboot recovery'. Note that this applies to all build variants. Otherwise the text
|
||||
// mode will be turned on automatically on debuggable builds, even without a swipe.
|
||||
std::string cmdline;
|
||||
if (android::base::ReadFileToString("/proc/cmdline", &cmdline)) {
|
||||
is_bootreason_recovery_ui_ = cmdline.find("bootreason=recovery_ui") != std::string::npos;
|
||||
} else {
|
||||
// Non-fatal, and won't affect Init() result.
|
||||
PLOG(WARNING) << "Failed to read /proc/cmdline";
|
||||
}
|
||||
}
|
||||
|
||||
if (!InitScreensaver()) {
|
||||
@@ -168,6 +182,12 @@ void RecoveryUI::OnTouchDetected(int dx, int dy) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Allow turning on text mode with any swipe, if bootloader has set a bootreason of recovery_ui.
|
||||
if (is_bootreason_recovery_ui_ && !IsTextVisible()) {
|
||||
ShowText(true);
|
||||
return;
|
||||
}
|
||||
|
||||
LOG(DEBUG) << "Swipe direction=" << direction;
|
||||
switch (direction) {
|
||||
case SwipeDirection::UP:
|
||||
|
||||
Reference in New Issue
Block a user