From 368af07a0fc4fbed6f6946c8bf8237702841d914 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 dcd33366a35..298cd8c7171 100644 --- a/services/core/jni/com_android_server_power_PowerManagerService.cpp +++ b/services/core/jni/com_android_server_power_PowerManagerService.cpp @@ -89,7 +89,6 @@ static sp gPowerHalAidl_ = nullptr; static sp gLineagePowerHalV1_0_ = nullptr; static sp gLineagePowerHalAidl_ = nullptr; static sp gSehMiscPower = nullptr; -static bool gPowerHalExists = true; static std::mutex gPowerHalMutex; static std::mutex gLineagePowerHalMutex; @@ -136,9 +135,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(); @@ -545,7 +546,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: @@ -573,14 +584,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