From 2633175f580dbaa79613737dca8cc55ec4136f5d 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. Fixes: 37662368 Test: manual - follow the above step-by-step Merged-In: I45470e945fe4d26d37a5641dfff3311968f51ee4 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 e07156ece1b97..a94ed608b9c9a 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) {