From 60847812e4d14433d66b98b4b7d33f742ec77f90 Mon Sep 17 00:00:00 2001 From: Long Ling Date: Mon, 7 Mar 2022 09:42:40 -0800 Subject: display: move hbm stats report to handler thread And check the null mPowerState. Bug: 222769254 Test: Can not reproduce. Monitor the dash board. Change-Id: Ic9c598ff7947e1e202985e960b746e4e2b309d59 --- .../server/display/DisplayPowerController.java | 25 ++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/services/core/java/com/android/server/display/DisplayPowerController.java b/services/core/java/com/android/server/display/DisplayPowerController.java index 9067f2e25152..f819e56e6856 100644 --- a/services/core/java/com/android/server/display/DisplayPowerController.java +++ b/services/core/java/com/android/server/display/DisplayPowerController.java @@ -129,7 +129,8 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call private static final int MSG_STOP = 9; private static final int MSG_UPDATE_BRIGHTNESS = 10; private static final int MSG_UPDATE_RBC = 11; - private static final int MSG_STATSD_HBM_BRIGHTNESS = 12; + private static final int MSG_BRIGHTNESS_RAMP_DONE = 12; + private static final int MSG_STATSD_HBM_BRIGHTNESS = 13; private static final int PROXIMITY_UNKNOWN = -1; private static final int PROXIMITY_NEGATIVE = 0; @@ -1050,9 +1051,8 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call @Override public void onAnimationEnd() { sendUpdatePowerState(); - - final float brightness = mPowerState.getScreenBrightness(); - reportStats(brightness); + Message msg = mHandler.obtainMessage(MSG_BRIGHTNESS_RAMP_DONE); + mHandler.sendMessage(msg); } }; @@ -1066,6 +1066,12 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call mCallbacks.releaseSuspendBlocker(); mUnfinishedBusiness = false; } + + final float brightness = mPowerState != null + ? mPowerState.getScreenBrightness() + : PowerManager.BRIGHTNESS_MIN; + reportStats(brightness); + if (mPowerState != null) { mPowerState.stop(); mPowerState = null; @@ -2580,6 +2586,10 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call } private void reportStats(float brightness) { + if (mLastStatsBrightness == brightness) { + return; + } + float hbmTransitionPoint = PowerManager.BRIGHTNESS_MAX; synchronized(mCachedBrightnessInfo) { if (mCachedBrightnessInfo.hbmTransitionPoint == null) { @@ -2680,6 +2690,13 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call handleRbcChanged(strengthChanged == 1, justActivated == 1); break; + case MSG_BRIGHTNESS_RAMP_DONE: + if (mPowerState != null) { + final float brightness = mPowerState.getScreenBrightness(); + reportStats(brightness); + } + break; + case MSG_STATSD_HBM_BRIGHTNESS: logHbmBrightnessStats(Float.intBitsToFloat(msg.arg1), msg.arg2); break; -- cgit v1.2.3-59-g8ed1b