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
This commit is contained in:
committed by
Steven Moreland
parent
07f580eaff
commit
2633175f58
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user