From cc6d0d7bca1d4e5c0daef1a276ca2e5ef6907843 Mon Sep 17 00:00:00 2001 From: Adithya R Date: Thu, 18 Jul 2024 20:16:00 +0530 Subject: [PATCH] sm6375-common: power-libperfmgr: Allow certain hints to be processed always These don't affect performance, so we don't need to disable them for battery saver or sustained performance mode. Change-Id: I483d7fa6d0067f21d46b6811ba324793415218c7 --- power-libperfmgr/Power.cpp | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/power-libperfmgr/Power.cpp b/power-libperfmgr/Power.cpp index 53cf3bd..ee2ee4a 100644 --- a/power-libperfmgr/Power.cpp +++ b/power-libperfmgr/Power.cpp @@ -47,6 +47,13 @@ constexpr char kPowerHalStateProp[] = "vendor.powerhal.state"; constexpr char kPowerHalAudioProp[] = "vendor.powerhal.audio"; constexpr char kPowerHalRenderingProp[] = "vendor.powerhal.rendering"; +static const std::vector kAlwaysAllowedModes = { + Mode::DOUBLE_TAP_TO_WAKE, + Mode::INTERACTIVE, + Mode::DEVICE_IDLE, + Mode::DISPLAY_INACTIVE, +}; + Power::Power() : mInteractionHandler(nullptr), mSustainedPerfModeOn(false), @@ -79,6 +86,10 @@ Power::Power() static void endAllHints() { std::shared_ptr hm = HintManager::GetInstance(); for (auto hint : hm->GetHints()) { + if (std::any_of(kAlwaysAllowedModes.begin(), kAlwaysAllowedModes.end(), + [hint](auto mode) { return hint == toString(mode); })) { + continue; + } hm->EndHint(hint); } } @@ -132,7 +143,8 @@ ndk::ScopedAStatus Power::setMode(Mode type, bool enabled) { case Mode::AUDIO_STREAMING_LOW_LATENCY: [[fallthrough]]; default: - if (mBatterySaverOn || mSustainedPerfModeOn) { + if ((mBatterySaverOn || mSustainedPerfModeOn) && std::find(kAlwaysAllowedModes.begin(), + kAlwaysAllowedModes.end(), type) == kAlwaysAllowedModes.end()) { break; } if (enabled) {