blob: ccee4a4de031ddf304339a3ee472b9029ed5947d [file] [log] [blame]
Jon West013ef582018-08-21 20:45:26 -04001From 4459e03e52773a42d83bca5a02172d658e7fc2b9 Mon Sep 17 00:00:00 2001
2From: Ricardo Cerqueira <cyanogenmod@cerqueira.org>
3Date: Fri, 23 Nov 2012 14:23:16 +0000
4Subject: [PATCH 17/19] Reintroduce button-backlight (and respective inactivity
5 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---
17 .../android/server/display/DisplayPowerController.java | 11 +++++++++++
18 .../com/android/server/power/PowerManagerService.java | 15 +++++++++++++++
19 2 files changed, 26 insertions(+)
20
21diff --git a/services/core/java/com/android/server/display/DisplayPowerController.java b/services/core/java/com/android/server/display/DisplayPowerController.java
22index 99412c5..bb6f65c 100644
23--- 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;
33@@ -141,6 +142,9 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
34 // 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
43@@ -374,6 +378,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
44 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;
51@@ -769,6 +774,12 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
52 // 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
65index 697801f..9b8584e 100644
66--- a/services/core/java/com/android/server/power/PowerManagerService.java
67+++ b/services/core/java/com/android/server/power/PowerManagerService.java
68@@ -222,6 +222,12 @@ public final class PowerManagerService extends SystemService
69 // Persistent property for last reboot reason
70 private static final String LAST_REBOOT_PROPERTY = "persist.sys.boot.reason";
71
72+ // Add button light timeout
73+ private static final int BUTTON_ON_DURATION = 5 * 1000;
74+
75+ // File location for last reboot reason
76+ private static final String LAST_REBOOT_LOCATION = "/data/misc/reboot/last_reboot_reason";
77+
78 private final Context mContext;
79 private final ServiceThread mHandlerThread;
80 private final PowerManagerHandler mHandler;
81@@ -242,6 +248,7 @@ public final class PowerManagerService extends SystemService
82 private SettingsObserver mSettingsObserver;
83 private DreamManagerInternal mDreamManager;
84 private Light mAttentionLight;
85+ private Light mButtonsLight;
86
87 private final Object mLock = LockGuard.installNewLock(LockGuard.INDEX_POWER);
88
89@@ -770,6 +777,7 @@ public final class PowerManagerService extends SystemService
90
91 mLightsManager = getLocalService(LightsManager.class);
92 mAttentionLight = mLightsManager.getLight(LightsManager.LIGHT_ID_ATTENTION);
93+ mButtonsLight = mLightsManager.getLight(LightsManager.LIGHT_ID_BUTTONS);
94
95 // Initialize display power management.
96 mDisplayManagerInternal.initPowerManagement(
97@@ -1953,6 +1961,7 @@ public final class PowerManagerService extends SystemService
98 final long screenOffTimeout = getScreenOffTimeoutLocked(sleepTimeout);
99 final long screenDimDuration = getScreenDimDurationLocked(screenOffTimeout);
100 final boolean userInactiveOverride = mUserInactiveOverrideFromWindowManager;
101+ final int screenBrightness = mScreenBrightnessSettingDefault;
102 final long nextProfileTimeout = getNextProfileTimeoutLocked(now);
103
104 mUserActivitySummary = 0;
105@@ -1960,6 +1969,12 @@ public final class PowerManagerService extends SystemService
106 nextTimeout = mLastUserActivityTime
107 + screenOffTimeout - screenDimDuration;
108 if (now < nextTimeout) {
109+ if (now > mLastUserActivityTime + BUTTON_ON_DURATION) {
110+ mButtonsLight.setBrightness(0);
111+ } else {
112+ mButtonsLight.setBrightness(screenBrightness);
113+ nextTimeout = now + BUTTON_ON_DURATION;
114+ }
115 mUserActivitySummary = USER_ACTIVITY_SCREEN_BRIGHT;
116 } else {
117 nextTimeout = mLastUserActivityTime + screenOffTimeout;
118--
1192.7.4
120