From 260f178a1a609c41ea5157e540f598661dd548f6 Mon Sep 17 00:00:00 2001 From: dataoutputstream Date: Mon, 2 Nov 2020 15:39:18 +0100 Subject: [PATCH] mButtonLights could be null check before setBrightness This is cause of system_server crashing for devices like mi10 that will end into continuos soft bootlooping. Change-Id: I31630b597de7ea602d360b1dfbf4cac744a6b9f0 --- .../com/android/server/display/DisplayPowerController.java | 2 ++ .../java/com/android/server/power/PowerManagerService.java | 3 +++ 2 files changed, 5 insertions(+) diff --git a/services/core/java/com/android/server/display/DisplayPowerController.java b/services/core/java/com/android/server/display/DisplayPowerController.java index e43837d31486..3fb68233bdf0 100644 --- a/services/core/java/com/android/server/display/DisplayPowerController.java +++ b/services/core/java/com/android/server/display/DisplayPowerController.java @@ -894,11 +894,13 @@ private void updatePowerState() { if (state == Display.STATE_OFF) { brightnessState = PowerManager.BRIGHTNESS_OFF_FLOAT; mBrightnessReasonTemp.setReason(BrightnessReason.REASON_SCREEN_OFF); + if (mLights.getLight(LightsManager.LIGHT_ID_BUTTONS)!=null) mLights.getLight(LightsManager.LIGHT_ID_BUTTONS).setBrightness(brightnessState); } // Disable button lights when dozing if (state == Display.STATE_DOZE || state == Display.STATE_DOZE_SUSPEND) { + if (mLights.getLight(LightsManager.LIGHT_ID_BUTTONS)!=null) mLights.getLight(LightsManager.LIGHT_ID_BUTTONS) .setBrightness(PowerManager.BRIGHTNESS_OFF_FLOAT); } diff --git a/services/core/java/com/android/server/power/PowerManagerService.java b/services/core/java/com/android/server/power/PowerManagerService.java index 361aa706f81b..573c6f68605c 100644 --- a/services/core/java/com/android/server/power/PowerManagerService.java +++ b/services/core/java/com/android/server/power/PowerManagerService.java @@ -2432,11 +2432,13 @@ private void updateUserActivitySummaryLocked(long now, int dirty) { mLastButtonActivityTime : mLastUserActivityTime; if (mButtonTimeout != 0 && now > mLastButtonActivityTime + mButtonTimeout) { + if(mButtonsLight!=null) mButtonsLight.setBrightness(PowerManager.BRIGHTNESS_OFF_FLOAT); mButtonOn = false; } else { if ((!mButtonLightOnKeypressOnly || mButtonPressed) && !mProximityPositive) { + if(mButtonsLight!=null) mButtonsLight.setBrightness(buttonBrightness); mButtonPressed = false; if (buttonBrightness != PowerManager.BRIGHTNESS_OFF_FLOAT && @@ -2457,6 +2459,7 @@ private void updateUserActivitySummaryLocked(long now, int dirty) { if (now < nextTimeout) { mUserActivitySummary = USER_ACTIVITY_SCREEN_DIM; if (getWakefulnessLocked() == WAKEFULNESS_AWAKE) { + if(mButtonsLight!=null) mButtonsLight.setBrightness(PowerManager.BRIGHTNESS_OFF_FLOAT); mButtonOn = false; }