From 792b863af87a7bd3d063da76ecefa7e229e1aded Mon Sep 17 00:00:00 2001 From: Pierre-Hugues Husson Date: Fri, 18 Dec 2020 16:38:58 -0500 Subject: [PATCH] Fix Samsung Power HAL (switch/case was filled with mines/returns), and cleanup code and add logs --- ...droid_server_power_PowerManagerService.cpp | 25 +++++++++++-------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/services/core/jni/com_android_server_power_PowerManagerService.cpp b/services/core/jni/com_android_server_power_PowerManagerService.cpp index 47fdcc9a87b..ed7d311ab9f 100644 --- a/services/core/jni/com_android_server_power_PowerManagerService.cpp +++ b/services/core/jni/com_android_server_power_PowerManagerService.cpp @@ -83,7 +83,6 @@ static sp gPowerHalHidlV1_1_ = nullptr; static sp gPowerHalAidl_ = nullptr; static sp gLineagePowerHalV1_0_ = nullptr; static sp gSehMiscPower = nullptr; -static bool gPowerHalExists = true; static std::mutex gPowerHalMutex; enum class HalVersion { @@ -129,9 +128,11 @@ static HalVersion connectPowerHalLocked() { gPowerHalAidlExists = false; } } - if (gPowerHalExists && gPowerHalHidlV1_0_ == nullptr) { + if (gPowerHalHidlExists && gPowerHalHidlV1_0_ == nullptr) { + ALOGE("Trying to connect to Samsung Power HAL"); gSehMiscPower = ISehMiscPower::getService(); gPowerHalHidlV1_0_ = IPowerV1_0::getService("miscpower"); + ALOGE("Got miscpower = %d, SehMiscPower = %d", gPowerHalHidlV1_0_ != nullptr ? 1 : 0, gSehMiscPower ? 1 : 0); } if (gPowerHalHidlExists && gPowerHalHidlV1_0_ == nullptr) { gPowerHalHidlV1_0_ = IPowerV1_0::getService(); @@ -484,7 +485,17 @@ static void nativeReleaseSuspendBlocker(JNIEnv *env, jclass /* clazz */, jstring static void nativeSetInteractive(JNIEnv* /* env */, jclass /* clazz */, jboolean enable) { std::unique_lock lock(gPowerHalMutex); - switch (connectPowerHalLocked()) { + + auto powerHalType = connectPowerHalLocked(); + if(gSehMiscPower != nullptr) { + android::base::Timer t; + Return ret = gSehMiscPower->setInteractiveAsync(enable, 0); + if(!ret.isOk()) { + ALOGE("set interactive async() failed: seh misc setInteractiveAsync"); + } + } + + switch (powerHalType) { case HalVersion::NONE: return; case HalVersion::HIDL_1_0: @@ -512,14 +523,6 @@ static void nativeSetInteractive(JNIEnv* /* env */, jclass /* clazz */, jboolean return; } } - sp sehMiscPower = getSehMiscPower(); - if(sehMiscPower != nullptr) { - android::base::Timer t; - Return ret = sehMiscPower->setInteractiveAsync(enable, 0); - if(!ret.isOk()) { - ALOGE("set interactive async() failed: seh misc setInteractiveAsync"); - } - } } static void nativeSetAutoSuspend(JNIEnv* /* env */, jclass /* clazz */, jboolean enable) { -- 2.25.1