blob: b9734009bbf1f0f0dfb983551229ee740abac3ec [file] [log] [blame]
Jackeaglea3ae16b2018-12-04 11:30:49 -05001From 06f853e0f4d05f28fa2d84a7b8744ba550d627dd Mon Sep 17 00:00:00 2001
Jon West013ef582018-08-21 20:45:26 -04002From: Ricardo Cerqueira <cyanogenmod@cerqueira.org>
3Date: Fri, 23 Nov 2012 14:23:16 +0000
Jackeaglea3ae16b2018-12-04 11:30:49 -05004Subject: [PATCH 17/24] Reintroduce button-backlight (and respective inactivity
Jon West013ef582018-08-21 20:45:26 -04005 timeout)
6
7The power manager rewrite from Change I1d7a52e98f0449f76d70bf421f6a7f245957d1d7
8completely removed support for control of the button backlights, which makes
9all capacitive buttons out there stay dark. The commit message in that change
10mentions it hasn't been implemented _yet_, so this fix should be temporary
11until upstream does their own implementation
12
13[RC: Updated to 5.0]
14
15Change-Id: I6094c446e0b8c23f57d30652a3cbd35dee5e821a
Jackeaglea3ae16b2018-12-04 11:30:49 -050016Signed-off-by: Jackeagle <jackeagle102@gmail.com>
Jon West013ef582018-08-21 20:45:26 -040017---
Jackeagled3ba2282018-11-17 20:49:22 -070018 .../server/display/DisplayPowerController.java | 11 +++++++++++
19 .../android/server/power/PowerManagerService.java | 12 ++++++++++++
Jackeagle0cc335a2018-10-19 00:06:49 -040020 2 files changed, 23 insertions(+)
Jon West013ef582018-08-21 20:45:26 -040021
22diff --git a/services/core/java/com/android/server/display/DisplayPowerController.java b/services/core/java/com/android/server/display/DisplayPowerController.java
Jackeagled3ba2282018-11-17 20:49:22 -070023index a09c426d7fa..4a727dc94a3 100644
Jon West013ef582018-08-21 20:45:26 -040024--- a/services/core/java/com/android/server/display/DisplayPowerController.java
25+++ b/services/core/java/com/android/server/display/DisplayPowerController.java
26@@ -21,6 +21,7 @@ import com.android.internal.app.IBatteryStats;
27 import com.android.server.LocalServices;
28 import com.android.server.am.BatteryStatsService;
29 import com.android.server.policy.WindowManagerPolicy;
30+import com.android.server.lights.LightsManager;
31
32 import android.animation.Animator;
33 import android.animation.ObjectAnimator;
Jackeagle0cc335a2018-10-19 00:06:49 -040034@@ -144,6 +145,9 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
Jon West013ef582018-08-21 20:45:26 -040035 // Battery stats.
36 private final IBatteryStats mBatteryStats;
37
38+ // The lights service.
39+ private final LightsManager mLights;
40+
41 // The sensor manager.
42 private final SensorManager mSensorManager;
43
Jackeagle0cc335a2018-10-19 00:06:49 -040044@@ -387,6 +391,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
Jon West013ef582018-08-21 20:45:26 -040045 mCallbacks = callbacks;
46
47 mBatteryStats = BatteryStatsService.getService();
48+ mLights = LocalServices.getService(LightsManager.class);
49 mSensorManager = sensorManager;
50 mWindowManagerPolicy = LocalServices.getService(WindowManagerPolicy.class);
51 mBlanker = blanker;
Jackeagle0cc335a2018-10-19 00:06:49 -040052@@ -837,6 +842,12 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
Jon West013ef582018-08-21 20:45:26 -040053 // Use zero brightness when screen is off.
54 if (state == Display.STATE_OFF) {
55 brightness = PowerManager.BRIGHTNESS_OFF;
56+ mLights.getLight(LightsManager.LIGHT_ID_BUTTONS).setBrightness(brightness);
57+ }
58+
59+ // Disable button lights when dozing
60+ if (state == Display.STATE_DOZE || state == Display.STATE_DOZE_SUSPEND) {
61+ mLights.getLight(LightsManager.LIGHT_ID_BUTTONS).setBrightness(PowerManager.BRIGHTNESS_OFF);
62 }
63
64 // Always use the VR brightness when in the VR state.
65diff --git a/services/core/java/com/android/server/power/PowerManagerService.java b/services/core/java/com/android/server/power/PowerManagerService.java
Jackeagled3ba2282018-11-17 20:49:22 -070066index d39401ddecd..b32581046f5 100644
Jon West013ef582018-08-21 20:45:26 -040067--- a/services/core/java/com/android/server/power/PowerManagerService.java
68+++ b/services/core/java/com/android/server/power/PowerManagerService.java
Jackeagle0cc335a2018-10-19 00:06:49 -040069@@ -230,6 +230,9 @@ public final class PowerManagerService extends SystemService
70
71 private static final float PROXIMITY_NEAR_THRESHOLD = 5.0f;
Jon West013ef582018-08-21 20:45:26 -040072
73+ // Add button light timeout
74+ private static final int BUTTON_ON_DURATION = 5 * 1000;
75+
Jon West013ef582018-08-21 20:45:26 -040076 private final Context mContext;
77 private final ServiceThread mHandlerThread;
78 private final PowerManagerHandler mHandler;
Jackeagle0cc335a2018-10-19 00:06:49 -040079@@ -250,6 +253,7 @@ public final class PowerManagerService extends SystemService
Jon West013ef582018-08-21 20:45:26 -040080 private SettingsObserver mSettingsObserver;
81 private DreamManagerInternal mDreamManager;
82 private Light mAttentionLight;
83+ private Light mButtonsLight;
84
85 private final Object mLock = LockGuard.installNewLock(LockGuard.INDEX_POWER);
86
Jackeagle0cc335a2018-10-19 00:06:49 -040087@@ -792,6 +796,7 @@ public final class PowerManagerService extends SystemService
Jon West013ef582018-08-21 20:45:26 -040088
89 mLightsManager = getLocalService(LightsManager.class);
90 mAttentionLight = mLightsManager.getLight(LightsManager.LIGHT_ID_ATTENTION);
91+ mButtonsLight = mLightsManager.getLight(LightsManager.LIGHT_ID_BUTTONS);
92
93 // Initialize display power management.
94 mDisplayManagerInternal.initPowerManagement(
Jackeagle0cc335a2018-10-19 00:06:49 -040095@@ -1997,6 +2002,7 @@ public final class PowerManagerService extends SystemService
Jon West013ef582018-08-21 20:45:26 -040096 final long screenOffTimeout = getScreenOffTimeoutLocked(sleepTimeout);
97 final long screenDimDuration = getScreenDimDurationLocked(screenOffTimeout);
98 final boolean userInactiveOverride = mUserInactiveOverrideFromWindowManager;
99+ final int screenBrightness = mScreenBrightnessSettingDefault;
100 final long nextProfileTimeout = getNextProfileTimeoutLocked(now);
101
102 mUserActivitySummary = 0;
Jackeagle0cc335a2018-10-19 00:06:49 -0400103@@ -2004,6 +2010,12 @@ public final class PowerManagerService extends SystemService
Jon West013ef582018-08-21 20:45:26 -0400104 nextTimeout = mLastUserActivityTime
105 + screenOffTimeout - screenDimDuration;
106 if (now < nextTimeout) {
107+ if (now > mLastUserActivityTime + BUTTON_ON_DURATION) {
108+ mButtonsLight.setBrightness(0);
109+ } else {
110+ mButtonsLight.setBrightness(screenBrightness);
111+ nextTimeout = now + BUTTON_ON_DURATION;
112+ }
113 mUserActivitySummary = USER_ACTIVITY_SCREEN_BRIGHT;
114 } else {
115 nextTimeout = mLastUserActivityTime + screenOffTimeout;
116--
Jackeagled3ba2282018-11-17 20:49:22 -07001172.17.1
Jon West013ef582018-08-21 20:45:26 -0400118