blob: 532108209bdd20647d5a3204de72034fe6b4479c [file] [log] [blame]
Pierre-Hugues Husson2acef1d2018-04-05 20:10:30 +02001From d7116d97f5a71b125be642494d897aed4ef31c60 Mon Sep 17 00:00:00 2001
Pierre-Hugues Hussonc0ca67e2018-03-22 20:31:17 +01002From: Ricardo Cerqueira <cyanogenmod@cerqueira.org>
3Date: Fri, 23 Nov 2012 14:23:16 +0000
Pierre-Hugues Husson2acef1d2018-04-05 20:10:30 +02004Subject: [PATCH 2/6] Reintroduce button-backlight (and respective inactivity
Pierre-Hugues Hussonc0ca67e2018-03-22 20:31:17 +01005 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 .../com/android/server/display/DisplayPowerController.java | 11 +++++++++++
18 .../java/com/android/server/power/PowerManagerService.java | 10 ++++++++++
19 2 files changed, 21 insertions(+)
20
21diff --git a/services/core/java/com/android/server/display/DisplayPowerController.java b/services/core/java/com/android/server/display/DisplayPowerController.java
Pierre-Hugues Husson2acef1d2018-04-05 20:10:30 +020022index f8e5836..80bdf1f 100644
Pierre-Hugues Hussonc0ca67e2018-03-22 20:31:17 +010023--- a/services/core/java/com/android/server/display/DisplayPowerController.java
24+++ b/services/core/java/com/android/server/display/DisplayPowerController.java
25@@ -20,6 +20,7 @@ import android.app.ActivityManager;
26 import com.android.internal.app.IBatteryStats;
27 import com.android.server.LocalServices;
28 import com.android.server.am.BatteryStatsService;
29+import com.android.server.lights.LightsManager;
30
31 import android.animation.Animator;
32 import android.animation.ObjectAnimator;
33@@ -129,6 +130,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@@ -300,6 +304,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@@ -678,6 +683,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 // Configure auto-brightness.
64diff --git a/services/core/java/com/android/server/power/PowerManagerService.java b/services/core/java/com/android/server/power/PowerManagerService.java
Pierre-Hugues Husson2acef1d2018-04-05 20:10:30 +020065index f84b20c..1ced53f 100644
Pierre-Hugues Hussonc0ca67e2018-03-22 20:31:17 +010066--- a/services/core/java/com/android/server/power/PowerManagerService.java
67+++ b/services/core/java/com/android/server/power/PowerManagerService.java
68@@ -220,6 +220,8 @@ public final class PowerManagerService extends SystemService
69 private static final int HALT_MODE_REBOOT = 1;
70 private static final int HALT_MODE_REBOOT_SAFE_MODE = 2;
71
72+ private static final int BUTTON_ON_DURATION = 5 * 1000;
73+
74 // File location for last reboot reason
75 private static final String LAST_REBOOT_LOCATION = "/data/misc/reboot/last_reboot_reason";
76
77@@ -240,6 +242,7 @@ public final class PowerManagerService extends SystemService
78 private SettingsObserver mSettingsObserver;
79 private DreamManagerInternal mDreamManager;
80 private Light mAttentionLight;
81+ private Light mButtonsLight;
82
83 private final Object mLock = LockGuard.installNewLock(LockGuard.INDEX_POWER);
84
85@@ -747,6 +750,7 @@ public final class PowerManagerService extends SystemService
86
87 mLightsManager = getLocalService(LightsManager.class);
88 mAttentionLight = mLightsManager.getLight(LightsManager.LIGHT_ID_ATTENTION);
89+ mButtonsLight = mLightsManager.getLight(LightsManager.LIGHT_ID_BUTTONS);
90
91 // Initialize display power management.
92 mDisplayManagerInternal.initPowerManagement(
93@@ -1947,6 +1951,12 @@ public final class PowerManagerService extends SystemService
94 nextTimeout = mLastUserActivityTime
95 + screenOffTimeout - screenDimDuration;
96 if (now < nextTimeout) {
97+ if (now > mLastUserActivityTime + BUTTON_ON_DURATION) {
98+ mButtonsLight.setBrightness(0);
99+ } else {
100+ mButtonsLight.setBrightness(mDisplayPowerRequest.screenBrightness);
101+ nextTimeout = now + BUTTON_ON_DURATION;
102+ }
103 mUserActivitySummary = USER_ACTIVITY_SCREEN_BRIGHT;
104 } else {
105 nextTimeout = mLastUserActivityTime + screenOffTimeout;
106--
Pierre-Hugues Husson2acef1d2018-04-05 20:10:30 +02001072.7.4
Pierre-Hugues Hussonc0ca67e2018-03-22 20:31:17 +0100108