blob: f5e4c6fde1ccf3e02ebe56344fe0a79b24fb1830 [file] [log] [blame]
Jackeagle0cc335a2018-10-19 00:06:49 -04001From 4b97606860972babc31af062db1a1b8345942f28 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
Jackeagle0cc335a2018-10-19 00:06:49 -04004Subject: [PATCH 19/26] 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
16---
Jackeagle0cc335a2018-10-19 00:06:49 -040017 .../com/android/server/display/DisplayPowerController.java | 11 +++++++++++
18 .../java/com/android/server/power/PowerManagerService.java | 12 ++++++++++++
19 2 files changed, 23 insertions(+)
Jon West013ef582018-08-21 20:45:26 -040020
21diff --git a/services/core/java/com/android/server/display/DisplayPowerController.java b/services/core/java/com/android/server/display/DisplayPowerController.java
Jackeagle0cc335a2018-10-19 00:06:49 -040022index db3368a..1f96902 100644
Jon West013ef582018-08-21 20:45:26 -040023--- a/services/core/java/com/android/server/display/DisplayPowerController.java
24+++ b/services/core/java/com/android/server/display/DisplayPowerController.java
25@@ -21,6 +21,7 @@ import com.android.internal.app.IBatteryStats;
26 import com.android.server.LocalServices;
27 import com.android.server.am.BatteryStatsService;
28 import com.android.server.policy.WindowManagerPolicy;
29+import com.android.server.lights.LightsManager;
30
31 import android.animation.Animator;
32 import android.animation.ObjectAnimator;
Jackeagle0cc335a2018-10-19 00:06:49 -040033@@ -144,6 +145,9 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
Jon West013ef582018-08-21 20:45:26 -040034 // Battery stats.
35 private final IBatteryStats mBatteryStats;
36
37+ // The lights service.
38+ private final LightsManager mLights;
39+
40 // The sensor manager.
41 private final SensorManager mSensorManager;
42
Jackeagle0cc335a2018-10-19 00:06:49 -040043@@ -387,6 +391,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
Jon West013ef582018-08-21 20:45:26 -040044 mCallbacks = callbacks;
45
46 mBatteryStats = BatteryStatsService.getService();
47+ mLights = LocalServices.getService(LightsManager.class);
48 mSensorManager = sensorManager;
49 mWindowManagerPolicy = LocalServices.getService(WindowManagerPolicy.class);
50 mBlanker = blanker;
Jackeagle0cc335a2018-10-19 00:06:49 -040051@@ -837,6 +842,12 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
Jon West013ef582018-08-21 20:45:26 -040052 // Use zero brightness when screen is off.
53 if (state == Display.STATE_OFF) {
54 brightness = PowerManager.BRIGHTNESS_OFF;
55+ mLights.getLight(LightsManager.LIGHT_ID_BUTTONS).setBrightness(brightness);
56+ }
57+
58+ // Disable button lights when dozing
59+ if (state == Display.STATE_DOZE || state == Display.STATE_DOZE_SUSPEND) {
60+ mLights.getLight(LightsManager.LIGHT_ID_BUTTONS).setBrightness(PowerManager.BRIGHTNESS_OFF);
61 }
62
63 // Always use the VR brightness when in the VR state.
64diff --git a/services/core/java/com/android/server/power/PowerManagerService.java b/services/core/java/com/android/server/power/PowerManagerService.java
Jackeagle0cc335a2018-10-19 00:06:49 -040065index d39401d..b325810 100644
Jon West013ef582018-08-21 20:45:26 -040066--- a/services/core/java/com/android/server/power/PowerManagerService.java
67+++ b/services/core/java/com/android/server/power/PowerManagerService.java
Jackeagle0cc335a2018-10-19 00:06:49 -040068@@ -230,6 +230,9 @@ public final class PowerManagerService extends SystemService
69
70 private static final float PROXIMITY_NEAR_THRESHOLD = 5.0f;
Jon West013ef582018-08-21 20:45:26 -040071
72+ // Add button light timeout
73+ private static final int BUTTON_ON_DURATION = 5 * 1000;
74+
Jon West013ef582018-08-21 20:45:26 -040075 private final Context mContext;
76 private final ServiceThread mHandlerThread;
77 private final PowerManagerHandler mHandler;
Jackeagle0cc335a2018-10-19 00:06:49 -040078@@ -250,6 +253,7 @@ public final class PowerManagerService extends SystemService
Jon West013ef582018-08-21 20:45:26 -040079 private SettingsObserver mSettingsObserver;
80 private DreamManagerInternal mDreamManager;
81 private Light mAttentionLight;
82+ private Light mButtonsLight;
83
84 private final Object mLock = LockGuard.installNewLock(LockGuard.INDEX_POWER);
85
Jackeagle0cc335a2018-10-19 00:06:49 -040086@@ -792,6 +796,7 @@ public final class PowerManagerService extends SystemService
Jon West013ef582018-08-21 20:45:26 -040087
88 mLightsManager = getLocalService(LightsManager.class);
89 mAttentionLight = mLightsManager.getLight(LightsManager.LIGHT_ID_ATTENTION);
90+ mButtonsLight = mLightsManager.getLight(LightsManager.LIGHT_ID_BUTTONS);
91
92 // Initialize display power management.
93 mDisplayManagerInternal.initPowerManagement(
Jackeagle0cc335a2018-10-19 00:06:49 -040094@@ -1997,6 +2002,7 @@ public final class PowerManagerService extends SystemService
Jon West013ef582018-08-21 20:45:26 -040095 final long screenOffTimeout = getScreenOffTimeoutLocked(sleepTimeout);
96 final long screenDimDuration = getScreenDimDurationLocked(screenOffTimeout);
97 final boolean userInactiveOverride = mUserInactiveOverrideFromWindowManager;
98+ final int screenBrightness = mScreenBrightnessSettingDefault;
99 final long nextProfileTimeout = getNextProfileTimeoutLocked(now);
100
101 mUserActivitySummary = 0;
Jackeagle0cc335a2018-10-19 00:06:49 -0400102@@ -2004,6 +2010,12 @@ public final class PowerManagerService extends SystemService
Jon West013ef582018-08-21 20:45:26 -0400103 nextTimeout = mLastUserActivityTime
104 + screenOffTimeout - screenDimDuration;
105 if (now < nextTimeout) {
106+ if (now > mLastUserActivityTime + BUTTON_ON_DURATION) {
107+ mButtonsLight.setBrightness(0);
108+ } else {
109+ mButtonsLight.setBrightness(screenBrightness);
110+ nextTimeout = now + BUTTON_ON_DURATION;
111+ }
112 mUserActivitySummary = USER_ACTIVITY_SCREEN_BRIGHT;
113 } else {
114 nextTimeout = mLastUserActivityTime + screenOffTimeout;
115--
1162.7.4
117