From 4f4939fb0468924a2d40e65a5bf78c3750d6589a Mon Sep 17 00:00:00 2001 From: Oleksiy Avramchenko Date: Tue, 25 Apr 2017 12:30:49 +0200 Subject: [PATCH] Force a light to be set for the first time The check in LightImpl::setLightLocked skips HAL call if light parameters aren't changed. During initialization these parameters are zeroed, thus it's not possible to turn the light off at the startup. As an example this fixes the issue with "stuck" battery light in the following scenario: 1. Device has secure start-up option set (either pin or pattern). 2. Charger is connected at the startup and battery light shows the charging state on pin or pattern prompt. 3. Device is unlocked and charger disconnected after some time, e.g. after com.android.server.lights.LightsService restarted. 4. The battery light is not off and stuck in the previous state until charger is connected / disconnected again. Bug: 37662368 Test: manual - follow the above step-by-step Change-Id: I45470e945fe4d26d37a5641dfff3311968f51ee4 --- .../core/java/com/android/server/lights/LightsService.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/services/core/java/com/android/server/lights/LightsService.java b/services/core/java/com/android/server/lights/LightsService.java index eead11464d640..6d64b1234e17a 100644 --- a/services/core/java/com/android/server/lights/LightsService.java +++ b/services/core/java/com/android/server/lights/LightsService.java @@ -129,10 +129,11 @@ public class LightsService extends SystemService { brightnessMode = mLastBrightnessMode; } - if ((color != mColor || mode != mMode || onMS != mOnMS || offMS != mOffMS || - mBrightnessMode != brightnessMode)) { + if (!mInitialized || color != mColor || mode != mMode || onMS != mOnMS || + offMS != mOffMS || mBrightnessMode != brightnessMode) { if (DEBUG) Slog.v(TAG, "setLight #" + mId + ": color=#" + Integer.toHexString(color) + ": brightnessMode=" + brightnessMode); + mInitialized = true; mLastColor = mColor; mColor = color; mMode = mode; @@ -164,6 +165,7 @@ public class LightsService extends SystemService { private int mLastColor; private boolean mVrModeEnabled; private boolean mUseLowPersistenceForVR; + private boolean mInitialized; } public LightsService(Context context) {