Loading services/surfaceflinger/DisplayHardware/PowerAdvisor.cpp +23 −18 Original line number Diff line number Diff line Loading @@ -124,24 +124,20 @@ public: static std::unique_ptr<HalWrapper> connect() { // Power HAL 1.3 is not guaranteed to be available, thus we need to query // Power HAL 1.0 first and try to cast it to Power HAL 1.3. // Power HAL 1.0 is always available, thus if we fail to query it, it means // Power HAL is not available temporarily and we should retry later. However, // if Power HAL 1.0 is available and we can't cast it to Power HAL 1.3, // it means Power HAL 1.3 is not available at all, so we should stop trying. sp<V1_3::IPower> powerHal = nullptr; if (sHasPowerHal_1_3) { sp<V1_0::IPower> powerHal_1_0 = V1_0::IPower::getService(); if (powerHal_1_0 != nullptr) { // Try to cast to Power HAL 1.3 powerHal = V1_3::IPower::castFrom(powerHal_1_0); if (powerHal == nullptr) { ALOGW("No Power HAL 1.3 service in system"); sHasPowerHal_1_3 = false; ALOGW("No Power HAL 1.3 service in system, disabling PowerAdvisor"); } else { ALOGI("Loaded Power HAL 1.3 service"); } } else { ALOGW("No Power HAL found, disabling PowerAdvisor"); } } if (powerHal == nullptr) { return nullptr; } Loading @@ -162,12 +158,9 @@ public: } private: static bool sHasPowerHal_1_3; const sp<V1_3::IPower> mPowerHal = nullptr; }; bool HidlPowerHalWrapper::sHasPowerHal_1_3 = true; class AidlPowerHalWrapper : public PowerAdvisor::HalWrapper { public: AidlPowerHalWrapper(sp<IPower> powerHal) : mPowerHal(std::move(powerHal)) { Loading Loading @@ -226,7 +219,13 @@ private: PowerAdvisor::HalWrapper* PowerAdvisor::getPowerHal() { static std::unique_ptr<HalWrapper> sHalWrapper = nullptr; static bool sHasHal = true; if (!sHasHal) { return nullptr; } // If we used to have a HAL, but it stopped responding, attempt to reconnect if (mReconnectPowerHal) { sHalWrapper = nullptr; mReconnectPowerHal = false; Loading @@ -244,6 +243,12 @@ PowerAdvisor::HalWrapper* PowerAdvisor::getPowerHal() { sHalWrapper = HidlPowerHalWrapper::connect(); } // If we make it to this point and still don't have a HAL, it's unlikely we // will, so stop trying if (sHalWrapper == nullptr) { sHasHal = false; } return sHalWrapper.get(); } Loading Loading
services/surfaceflinger/DisplayHardware/PowerAdvisor.cpp +23 −18 Original line number Diff line number Diff line Loading @@ -124,24 +124,20 @@ public: static std::unique_ptr<HalWrapper> connect() { // Power HAL 1.3 is not guaranteed to be available, thus we need to query // Power HAL 1.0 first and try to cast it to Power HAL 1.3. // Power HAL 1.0 is always available, thus if we fail to query it, it means // Power HAL is not available temporarily and we should retry later. However, // if Power HAL 1.0 is available and we can't cast it to Power HAL 1.3, // it means Power HAL 1.3 is not available at all, so we should stop trying. sp<V1_3::IPower> powerHal = nullptr; if (sHasPowerHal_1_3) { sp<V1_0::IPower> powerHal_1_0 = V1_0::IPower::getService(); if (powerHal_1_0 != nullptr) { // Try to cast to Power HAL 1.3 powerHal = V1_3::IPower::castFrom(powerHal_1_0); if (powerHal == nullptr) { ALOGW("No Power HAL 1.3 service in system"); sHasPowerHal_1_3 = false; ALOGW("No Power HAL 1.3 service in system, disabling PowerAdvisor"); } else { ALOGI("Loaded Power HAL 1.3 service"); } } else { ALOGW("No Power HAL found, disabling PowerAdvisor"); } } if (powerHal == nullptr) { return nullptr; } Loading @@ -162,12 +158,9 @@ public: } private: static bool sHasPowerHal_1_3; const sp<V1_3::IPower> mPowerHal = nullptr; }; bool HidlPowerHalWrapper::sHasPowerHal_1_3 = true; class AidlPowerHalWrapper : public PowerAdvisor::HalWrapper { public: AidlPowerHalWrapper(sp<IPower> powerHal) : mPowerHal(std::move(powerHal)) { Loading Loading @@ -226,7 +219,13 @@ private: PowerAdvisor::HalWrapper* PowerAdvisor::getPowerHal() { static std::unique_ptr<HalWrapper> sHalWrapper = nullptr; static bool sHasHal = true; if (!sHasHal) { return nullptr; } // If we used to have a HAL, but it stopped responding, attempt to reconnect if (mReconnectPowerHal) { sHalWrapper = nullptr; mReconnectPowerHal = false; Loading @@ -244,6 +243,12 @@ PowerAdvisor::HalWrapper* PowerAdvisor::getPowerHal() { sHalWrapper = HidlPowerHalWrapper::connect(); } // If we make it to this point and still don't have a HAL, it's unlikely we // will, so stop trying if (sHalWrapper == nullptr) { sHasHal = false; } return sHalWrapper.get(); } Loading