blob: a4d1b92621cebf37d8a2a8fac1d879aed6088369 [file] [log] [blame]
Jon Westf17c5322018-08-13 17:59:16 -04001From 035ecde36847f70c7499d576afe1dfa9e130ec8f 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
Jon West1fd60302018-08-11 19:14:03 -04004Subject: [PATCH 01/14] 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---
Jon West1fd60302018-08-11 19:14:03 -040017 .../server/display/DisplayPowerController.java | 11 +++++++++++
18 .../com/android/server/power/PowerManagerService.java | 10 ++++++++++
Pierre-Hugues Hussonc0ca67e2018-03-22 20:31:17 +010019 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
Jon West1fd60302018-08-11 19:14:03 -040022index 99412c56b27..0b2f487840b 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;
Jon West1fd60302018-08-11 19:14:03 -040030 import com.android.server.policy.WindowManagerPolicy;
Pierre-Hugues Hussonc0ca67e2018-03-22 20:31:17 +010031
32 import android.animation.Animator;
Jon West1fd60302018-08-11 19:14:03 -040033@@ -141,6 +142,9 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
Pierre-Hugues Hussonc0ca67e2018-03-22 20:31:17 +010034 // 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
Jon West1fd60302018-08-11 19:14:03 -040043@@ -374,6 +378,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
Pierre-Hugues Hussonc0ca67e2018-03-22 20:31:17 +010044 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;
Jon West1fd60302018-08-11 19:14:03 -040051@@ -769,6 +774,12 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
Pierre-Hugues Hussonc0ca67e2018-03-22 20:31:17 +010052 // 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
Jon West1fd60302018-08-11 19:14:03 -040063 // Always use the VR brightness when in the VR state.
Pierre-Hugues Hussonc0ca67e2018-03-22 20:31:17 +010064diff --git a/services/core/java/com/android/server/power/PowerManagerService.java b/services/core/java/com/android/server/power/PowerManagerService.java
Jon West1fd60302018-08-11 19:14:03 -040065index 697801f7787..a9e4cda02ae 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
Jon West1fd60302018-08-11 19:14:03 -040068@@ -222,6 +222,8 @@ 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";
Pierre-Hugues Hussonc0ca67e2018-03-22 20:31:17 +010071
72+ private static final int BUTTON_ON_DURATION = 5 * 1000;
73+
Jon West1fd60302018-08-11 19:14:03 -040074 private final Context mContext;
75 private final ServiceThread mHandlerThread;
76 private final PowerManagerHandler mHandler;
77@@ -242,6 +244,7 @@ public final class PowerManagerService extends SystemService
Pierre-Hugues Hussonc0ca67e2018-03-22 20:31:17 +010078 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
Jon West1fd60302018-08-11 19:14:03 -040085@@ -770,6 +773,7 @@ public final class PowerManagerService extends SystemService
Pierre-Hugues Hussonc0ca67e2018-03-22 20:31:17 +010086
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(
Jon West1fd60302018-08-11 19:14:03 -040093@@ -1960,6 +1964,12 @@ public final class PowerManagerService extends SystemService
Pierre-Hugues Hussonc0ca67e2018-03-22 20:31:17 +010094 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--
Jon West1fd60302018-08-11 19:14:03 -04001072.17.1
Pierre-Hugues Hussonc0ca67e2018-03-22 20:31:17 +0100108