summaryrefslogtreecommitdiff
path: root/cmds/bootanimation/BootAnimation.cpp
diff options
context:
space:
mode:
authorAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2020-01-29 11:54:51 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2020-01-29 11:54:51 +0000
commit789ce028b514adb10b6bf1420002cc63b1e5a3f1 (patch)
treebc2cd3131edef4efc21563dae54c04e4553a4a4b /cmds/bootanimation/BootAnimation.cpp
parent57383bd9031a154571d484bc13f50d02fdb06ddb (diff)
parentd7c39e5ca969d8c4e1e438cd9768d3628a9919c9 (diff)
Merge "Add a way to customize boot animation during userspace reboot" am: 3d0bb1d650 am: ab74c5633a am: d7c39e5ca9
Change-Id: I7aa06e75dfe7fd8b7bb29830ea46ebcbe96b536a
Diffstat (limited to 'cmds/bootanimation/BootAnimation.cpp')
-rw-r--r--cmds/bootanimation/BootAnimation.cpp57
1 files changed, 39 insertions, 18 deletions
diff --git a/cmds/bootanimation/BootAnimation.cpp b/cmds/bootanimation/BootAnimation.cpp
index 2537edaf9e81..520366f518ab 100644
--- a/cmds/bootanimation/BootAnimation.cpp
+++ b/cmds/bootanimation/BootAnimation.cpp
@@ -17,6 +17,8 @@
#define LOG_NDEBUG 0
#define LOG_TAG "BootAnimation"
+#include <vector>
+
#include <stdint.h>
#include <inttypes.h>
#include <sys/inotify.h>
@@ -80,6 +82,10 @@ static const char OEM_SHUTDOWNANIMATION_FILE[] = "/oem/media/shutdownanimation.z
static const char PRODUCT_SHUTDOWNANIMATION_FILE[] = "/product/media/shutdownanimation.zip";
static const char SYSTEM_SHUTDOWNANIMATION_FILE[] = "/system/media/shutdownanimation.zip";
+static constexpr const char* PRODUCT_USERSPACE_REBOOT_ANIMATION_FILE = "/product/media/userspace-reboot.zip";
+static constexpr const char* OEM_USERSPACE_REBOOT_ANIMATION_FILE = "/oem/media/userspace-reboot.zip";
+static constexpr const char* SYSTEM_USERSPACE_REBOOT_ANIMATION_FILE = "/system/media/userspace-reboot.zip";
+
static const char SYSTEM_DATA_DIR_PATH[] = "/data/system";
static const char SYSTEM_TIME_DIR_NAME[] = "time";
static const char SYSTEM_TIME_DIR_PATH[] = "/data/system/time";
@@ -384,6 +390,16 @@ bool BootAnimation::preloadAnimation() {
return false;
}
+bool BootAnimation::findBootAnimationFileInternal(const std::vector<std::string> &files) {
+ for (const std::string& f : files) {
+ if (access(f.c_str(), R_OK) == 0) {
+ mZipFileName = f.c_str();
+ return true;
+ }
+ }
+ return false;
+}
+
void BootAnimation::findBootAnimationFile() {
// If the device has encryption turned on or is in process
// of being encrypted we show the encrypted boot animation.
@@ -394,28 +410,33 @@ void BootAnimation::findBootAnimationFile() {
!strcmp("trigger_restart_min_framework", decrypt);
if (!mShuttingDown && encryptedAnimation) {
- static const char* encryptedBootFiles[] =
- {PRODUCT_ENCRYPTED_BOOTANIMATION_FILE, SYSTEM_ENCRYPTED_BOOTANIMATION_FILE};
- for (const char* f : encryptedBootFiles) {
- if (access(f, R_OK) == 0) {
- mZipFileName = f;
- return;
- }
+ static const std::vector<std::string> encryptedBootFiles = {
+ PRODUCT_ENCRYPTED_BOOTANIMATION_FILE, SYSTEM_ENCRYPTED_BOOTANIMATION_FILE,
+ };
+ if (findBootAnimationFileInternal(encryptedBootFiles)) {
+ return;
}
}
const bool playDarkAnim = android::base::GetIntProperty("ro.boot.theme", 0) == 1;
- static const char* bootFiles[] =
- {APEX_BOOTANIMATION_FILE, playDarkAnim ? PRODUCT_BOOTANIMATION_DARK_FILE : PRODUCT_BOOTANIMATION_FILE,
- OEM_BOOTANIMATION_FILE, SYSTEM_BOOTANIMATION_FILE};
- static const char* shutdownFiles[] =
- {PRODUCT_SHUTDOWNANIMATION_FILE, OEM_SHUTDOWNANIMATION_FILE, SYSTEM_SHUTDOWNANIMATION_FILE, ""};
-
- for (const char* f : (!mShuttingDown ? bootFiles : shutdownFiles)) {
- if (access(f, R_OK) == 0) {
- mZipFileName = f;
- return;
- }
+ static const std::vector<std::string> bootFiles = {
+ APEX_BOOTANIMATION_FILE, playDarkAnim ? PRODUCT_BOOTANIMATION_DARK_FILE : PRODUCT_BOOTANIMATION_FILE,
+ OEM_BOOTANIMATION_FILE, SYSTEM_BOOTANIMATION_FILE
+ };
+ static const std::vector<std::string> shutdownFiles = {
+ PRODUCT_SHUTDOWNANIMATION_FILE, OEM_SHUTDOWNANIMATION_FILE, SYSTEM_SHUTDOWNANIMATION_FILE, ""
+ };
+ static const std::vector<std::string> userspaceRebootFiles = {
+ PRODUCT_USERSPACE_REBOOT_ANIMATION_FILE, OEM_USERSPACE_REBOOT_ANIMATION_FILE,
+ SYSTEM_USERSPACE_REBOOT_ANIMATION_FILE,
+ };
+
+ if (android::base::GetBoolProperty("sys.init.userspace_reboot.in_progress", false)) {
+ findBootAnimationFileInternal(userspaceRebootFiles);
+ } else if (mShuttingDown) {
+ findBootAnimationFileInternal(shutdownFiles);
+ } else {
+ findBootAnimationFileInternal(bootFiles);
}
}