blob: 076a85d10bbf62faffe821f34b957cb8ce434c9d [file] [log] [blame]
Jackeagled3ba2282018-11-17 20:49:22 -07001From 2beeca83b6ef8837355d84c5939ee543d6d2701f 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---
Jackeagled3ba2282018-11-17 20:49:22 -070017 .../server/display/DisplayPowerController.java | 11 +++++++++++
18 .../android/server/power/PowerManagerService.java | 12 ++++++++++++
Jackeagle0cc335a2018-10-19 00:06:49 -040019 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
Jackeagled3ba2282018-11-17 20:49:22 -070022index a09c426d7fa..4a727dc94a3 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
Jackeagled3ba2282018-11-17 20:49:22 -070065index d39401ddecd..b32581046f5 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--
Jackeagled3ba2282018-11-17 20:49:22 -07001162.17.1
Jon West013ef582018-08-21 20:45:26 -0400117