From fa85b261c2d3a6c2a7b5c69bc0885bc3d0f01bb9 Mon Sep 17 00:00:00 2001 From: Adithya R Date: Sun, 10 Dec 2023 14:49:23 +0530 Subject: [PATCH] sm8350-common: parts: Fix thermal profile screen state handling --- .../settings/thermal/ThermalService.java | 41 +++++++++++++------ 1 file changed, 29 insertions(+), 12 deletions(-) diff --git a/parts/src/org/lineageos/settings/thermal/ThermalService.java b/parts/src/org/lineageos/settings/thermal/ThermalService.java index cba9044..4e29a56 100644 --- a/parts/src/org/lineageos/settings/thermal/ThermalService.java +++ b/parts/src/org/lineageos/settings/thermal/ThermalService.java @@ -37,7 +37,8 @@ public class ThermalService extends Service { private static final String TAG = "ThermalService"; private static final boolean DEBUG = false; - private String mPreviousApp; + private boolean mScreenOn = true; + private String mCurrentApp = ""; private ThermalUtils mThermalUtils; private IActivityTaskManager mActivityTaskManager; @@ -45,8 +46,16 @@ public class ThermalService extends Service { private BroadcastReceiver mIntentReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { - mPreviousApp = ""; - mThermalUtils.setDefaultThermalProfile(); + switch (intent.getAction()) { + case Intent.ACTION_SCREEN_OFF: + mScreenOn = false; + setThermalProfile(); + break; + case Intent.ACTION_SCREEN_ON: + mScreenOn = true; + setThermalProfile(); + break; + } } }; @@ -82,19 +91,27 @@ public class ThermalService extends Service { this.registerReceiver(mIntentReceiver, filter); } + private void setThermalProfile() { + if (mScreenOn) { + mThermalUtils.setThermalProfile(mCurrentApp); + } else { + mThermalUtils.setDefaultThermalProfile(); + } + } + private final TaskStackListener mTaskListener = new TaskStackListener() { @Override public void onTaskStackChanged() { try { - final RootTaskInfo info = mActivityTaskManager.getFocusedRootTaskInfo(); - if (info == null || info.topActivity == null) { - return; - } - - String foregroundApp = info.topActivity.getPackageName(); - if (!foregroundApp.equals(mPreviousApp)) { - mThermalUtils.setThermalProfile(foregroundApp); - mPreviousApp = foregroundApp; + final ActivityTaskManager.RootTaskInfo focusedTask = + ActivityTaskManager.getService().getFocusedRootTaskInfo(); + if (focusedTask != null && focusedTask.topActivity != null) { + ComponentName taskComponentName = focusedTask.topActivity; + String foregroundApp = taskComponentName.getPackageName(); + if (!foregroundApp.equals(mCurrentApp)) { + mCurrentApp = foregroundApp; + setThermalProfile(); + } } } catch (Exception e) {} }