blob: f5e4c6fde1ccf3e02ebe56344fe0a79b24fb1830 [file] [log] [blame]
From 4b97606860972babc31af062db1a1b8345942f28 Mon Sep 17 00:00:00 2001
From: Ricardo Cerqueira <cyanogenmod@cerqueira.org>
Date: Fri, 23 Nov 2012 14:23:16 +0000
Subject: [PATCH 19/26] Reintroduce button-backlight (and respective inactivity
timeout)
The power manager rewrite from Change I1d7a52e98f0449f76d70bf421f6a7f245957d1d7
completely removed support for control of the button backlights, which makes
all capacitive buttons out there stay dark. The commit message in that change
mentions it hasn't been implemented _yet_, so this fix should be temporary
until upstream does their own implementation
[RC: Updated to 5.0]
Change-Id: I6094c446e0b8c23f57d30652a3cbd35dee5e821a
---
.../com/android/server/display/DisplayPowerController.java | 11 +++++++++++
.../java/com/android/server/power/PowerManagerService.java | 12 ++++++++++++
2 files changed, 23 insertions(+)
diff --git a/services/core/java/com/android/server/display/DisplayPowerController.java b/services/core/java/com/android/server/display/DisplayPowerController.java
index db3368a..1f96902 100644
--- a/services/core/java/com/android/server/display/DisplayPowerController.java
+++ b/services/core/java/com/android/server/display/DisplayPowerController.java
@@ -21,6 +21,7 @@ import com.android.internal.app.IBatteryStats;
import com.android.server.LocalServices;
import com.android.server.am.BatteryStatsService;
import com.android.server.policy.WindowManagerPolicy;
+import com.android.server.lights.LightsManager;
import android.animation.Animator;
import android.animation.ObjectAnimator;
@@ -144,6 +145,9 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
// Battery stats.
private final IBatteryStats mBatteryStats;
+ // The lights service.
+ private final LightsManager mLights;
+
// The sensor manager.
private final SensorManager mSensorManager;
@@ -387,6 +391,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
mCallbacks = callbacks;
mBatteryStats = BatteryStatsService.getService();
+ mLights = LocalServices.getService(LightsManager.class);
mSensorManager = sensorManager;
mWindowManagerPolicy = LocalServices.getService(WindowManagerPolicy.class);
mBlanker = blanker;
@@ -837,6 +842,12 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
// Use zero brightness when screen is off.
if (state == Display.STATE_OFF) {
brightness = PowerManager.BRIGHTNESS_OFF;
+ mLights.getLight(LightsManager.LIGHT_ID_BUTTONS).setBrightness(brightness);
+ }
+
+ // Disable button lights when dozing
+ if (state == Display.STATE_DOZE || state == Display.STATE_DOZE_SUSPEND) {
+ mLights.getLight(LightsManager.LIGHT_ID_BUTTONS).setBrightness(PowerManager.BRIGHTNESS_OFF);
}
// Always use the VR brightness when in the VR state.
diff --git a/services/core/java/com/android/server/power/PowerManagerService.java b/services/core/java/com/android/server/power/PowerManagerService.java
index d39401d..b325810 100644
--- a/services/core/java/com/android/server/power/PowerManagerService.java
+++ b/services/core/java/com/android/server/power/PowerManagerService.java
@@ -230,6 +230,9 @@ public final class PowerManagerService extends SystemService
private static final float PROXIMITY_NEAR_THRESHOLD = 5.0f;
+ // Add button light timeout
+ private static final int BUTTON_ON_DURATION = 5 * 1000;
+
private final Context mContext;
private final ServiceThread mHandlerThread;
private final PowerManagerHandler mHandler;
@@ -250,6 +253,7 @@ public final class PowerManagerService extends SystemService
private SettingsObserver mSettingsObserver;
private DreamManagerInternal mDreamManager;
private Light mAttentionLight;
+ private Light mButtonsLight;
private final Object mLock = LockGuard.installNewLock(LockGuard.INDEX_POWER);
@@ -792,6 +796,7 @@ public final class PowerManagerService extends SystemService
mLightsManager = getLocalService(LightsManager.class);
mAttentionLight = mLightsManager.getLight(LightsManager.LIGHT_ID_ATTENTION);
+ mButtonsLight = mLightsManager.getLight(LightsManager.LIGHT_ID_BUTTONS);
// Initialize display power management.
mDisplayManagerInternal.initPowerManagement(
@@ -1997,6 +2002,7 @@ public final class PowerManagerService extends SystemService
final long screenOffTimeout = getScreenOffTimeoutLocked(sleepTimeout);
final long screenDimDuration = getScreenDimDurationLocked(screenOffTimeout);
final boolean userInactiveOverride = mUserInactiveOverrideFromWindowManager;
+ final int screenBrightness = mScreenBrightnessSettingDefault;
final long nextProfileTimeout = getNextProfileTimeoutLocked(now);
mUserActivitySummary = 0;
@@ -2004,6 +2010,12 @@ public final class PowerManagerService extends SystemService
nextTimeout = mLastUserActivityTime
+ screenOffTimeout - screenDimDuration;
if (now < nextTimeout) {
+ if (now > mLastUserActivityTime + BUTTON_ON_DURATION) {
+ mButtonsLight.setBrightness(0);
+ } else {
+ mButtonsLight.setBrightness(screenBrightness);
+ nextTimeout = now + BUTTON_ON_DURATION;
+ }
mUserActivitySummary = USER_ACTIVITY_SCREEN_BRIGHT;
} else {
nextTimeout = mLastUserActivityTime + screenOffTimeout;
--
2.7.4