From c704e06ce596bd0a6de66b10b108aee95535468a Mon Sep 17 00:00:00 2001 From: Doug Zongker Date: Fri, 23 May 2014 08:40:35 -0700 Subject: disable async reboot during package installation The default recovery UI will reboot the device when the power key is pressed 7 times in a row, regardless of what recovery is doing. Disable this feature during package installation, to minimize the chance of corrupting the device due to a mid-install reboot. (Debug packages can explicitly request that the feature be reenabled.) Change-Id: I20f3ec240ecd344615d452005ff26d8dd7775acf --- install.cpp | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'install.cpp') diff --git a/install.cpp b/install.cpp index 0bd7945..0f05960 100644 --- a/install.cpp +++ b/install.cpp @@ -160,6 +160,11 @@ try_update_binary(const char *path, ZipArchive *zip, int* wipe_cache) { *wipe_cache = 1; } else if (strcmp(command, "clear_display") == 0) { ui->SetBackground(RecoveryUI::NONE); + } else if (strcmp(command, "enable_reboot") == 0) { + // packages can explicitly request that they want the user + // to be able to reboot during installation (useful for + // debugging packages that don't exit). + ui->SetEnableReboot(true); } else { LOGE("unknown command [%s]\n", command); } @@ -236,7 +241,9 @@ really_install_package(const char *path, int* wipe_cache) /* Verify and install the contents of the package. */ ui->Print("Installing update...\n"); + ui->SetEnableReboot(false); int result = try_update_binary(path, &zip, wipe_cache); + ui->SetEnableReboot(true); sysReleaseMap(&map); -- cgit v1.1