Fix shutdown animation cannot be shown
Don't start shutdown critical service or turn off backlight, when ro.init.shutdown_animation=true Bug: 196511757 Test: config ro.init.shutdown_animation=true and build shutdownanimation.zip to /system/media/ Signed-off-by: zengshuchuan <zengshuchuan@allwinnertech.com> Change-Id: I5932b7281af630e80247048a70fe1b24f536d1d9
This commit is contained in:
parent
c5c532fc31
commit
21c97a5780
|
@ -639,6 +639,7 @@ static void DoReboot(unsigned int cmd, const std::string& reason, const std::str
|
||||||
abort();
|
abort();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool do_shutdown_animation = GetBoolProperty("ro.init.shutdown_animation", false);
|
||||||
// watchdogd is a vendor specific component but should be alive to complete shutdown safely.
|
// watchdogd is a vendor specific component but should be alive to complete shutdown safely.
|
||||||
const std::set<std::string> to_starts{"watchdogd"};
|
const std::set<std::string> to_starts{"watchdogd"};
|
||||||
std::set<std::string> stop_first;
|
std::set<std::string> stop_first;
|
||||||
|
@ -652,6 +653,8 @@ static void DoReboot(unsigned int cmd, const std::string& reason, const std::str
|
||||||
<< "': " << result.error();
|
<< "': " << result.error();
|
||||||
}
|
}
|
||||||
s->SetShutdownCritical();
|
s->SetShutdownCritical();
|
||||||
|
} else if (do_shutdown_animation) {
|
||||||
|
continue;
|
||||||
} else if (s->IsShutdownCritical()) {
|
} else if (s->IsShutdownCritical()) {
|
||||||
// Start shutdown critical service if not started.
|
// Start shutdown critical service if not started.
|
||||||
if (auto result = s->Start(); !result.ok()) {
|
if (auto result = s->Start(); !result.ok()) {
|
||||||
|
@ -664,14 +667,13 @@ static void DoReboot(unsigned int cmd, const std::string& reason, const std::str
|
||||||
}
|
}
|
||||||
|
|
||||||
// remaining operations (specifically fsck) may take a substantial duration
|
// remaining operations (specifically fsck) may take a substantial duration
|
||||||
if (cmd == ANDROID_RB_POWEROFF || is_thermal_shutdown) {
|
if (!do_shutdown_animation && (cmd == ANDROID_RB_POWEROFF || is_thermal_shutdown)) {
|
||||||
TurnOffBacklight();
|
TurnOffBacklight();
|
||||||
}
|
}
|
||||||
|
|
||||||
Service* boot_anim = ServiceList::GetInstance().FindService("bootanim");
|
Service* boot_anim = ServiceList::GetInstance().FindService("bootanim");
|
||||||
Service* surface_flinger = ServiceList::GetInstance().FindService("surfaceflinger");
|
Service* surface_flinger = ServiceList::GetInstance().FindService("surfaceflinger");
|
||||||
if (boot_anim != nullptr && surface_flinger != nullptr && surface_flinger->IsRunning()) {
|
if (boot_anim != nullptr && surface_flinger != nullptr && surface_flinger->IsRunning()) {
|
||||||
bool do_shutdown_animation = GetBoolProperty("ro.init.shutdown_animation", false);
|
|
||||||
|
|
||||||
if (do_shutdown_animation) {
|
if (do_shutdown_animation) {
|
||||||
SetProperty("service.bootanim.exit", "0");
|
SetProperty("service.bootanim.exit", "0");
|
||||||
|
|
Loading…
Reference in New Issue