Loading services/core/java/com/android/server/display/DisplayPowerController.java +36 −86 Original line number Diff line number Diff line Loading @@ -50,8 +50,6 @@ import android.os.UserHandle; import android.provider.Settings; import android.util.Log; import android.util.MathUtils; import android.util.MutableFloat; import android.util.MutableInt; import android.util.Slog; import android.util.TimeUtils; import android.view.Display; Loading Loading @@ -1382,7 +1380,6 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call // Animate the screen brightness when the screen is on or dozing. // Skip the animation when the screen is off or suspended or transition to/from VR. boolean brightnessAdjusted = false; if (!mPendingScreenOff) { if (mSkipScreenOnBrightnessRamp) { if (state == Display.STATE_ON) { Loading Loading @@ -1475,19 +1472,15 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call // slider event so notify as if the system changed the brightness. userInitiatedChange = false; } notifyBrightnessTrackerChanged(brightnessState, userInitiatedChange, notifyBrightnessChanged(brightnessState, userInitiatedChange, hadUserBrightnessPoint); } // We save the brightness info *after* the brightness setting has been changed and // adjustments made so that the brightness info reflects the latest value. brightnessAdjusted = saveBrightnessInfo(getScreenBrightnessSetting(), animateValue); saveBrightnessInfo(getScreenBrightnessSetting(), animateValue); } else { brightnessAdjusted = saveBrightnessInfo(getScreenBrightnessSetting()); } if (brightnessAdjusted) { postBrightnessChangeRunnable(); saveBrightnessInfo(getScreenBrightnessSetting()); } // Log any changes to what is currently driving the brightness setting. Loading Loading @@ -1603,48 +1596,29 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call public BrightnessInfo getBrightnessInfo() { synchronized (mCachedBrightnessInfo) { return new BrightnessInfo( mCachedBrightnessInfo.brightness.value, mCachedBrightnessInfo.adjustedBrightness.value, mCachedBrightnessInfo.brightnessMin.value, mCachedBrightnessInfo.brightnessMax.value, mCachedBrightnessInfo.hbmMode.value, mCachedBrightnessInfo.hbmTransitionPoint.value); mCachedBrightnessInfo.brightness, mCachedBrightnessInfo.adjustedBrightness, mCachedBrightnessInfo.brightnessMin, mCachedBrightnessInfo.brightnessMax, mCachedBrightnessInfo.hbmMode, mCachedBrightnessInfo.highBrightnessTransitionPoint); } } private boolean saveBrightnessInfo(float brightness) { return saveBrightnessInfo(brightness, brightness); private void saveBrightnessInfo(float brightness) { saveBrightnessInfo(brightness, brightness); } private boolean saveBrightnessInfo(float brightness, float adjustedBrightness) { private void saveBrightnessInfo(float brightness, float adjustedBrightness) { synchronized (mCachedBrightnessInfo) { boolean changed = false; changed |= mCachedBrightnessInfo.checkAndSetFloat(mCachedBrightnessInfo.brightness, brightness); changed |= mCachedBrightnessInfo.checkAndSetFloat(mCachedBrightnessInfo.adjustedBrightness, adjustedBrightness); changed |= mCachedBrightnessInfo.checkAndSetFloat(mCachedBrightnessInfo.brightnessMin, mHbmController.getCurrentBrightnessMin()); changed |= mCachedBrightnessInfo.checkAndSetFloat(mCachedBrightnessInfo.brightnessMax, mHbmController.getCurrentBrightnessMax()); changed |= mCachedBrightnessInfo.checkAndSetInt(mCachedBrightnessInfo.hbmMode, mHbmController.getHighBrightnessMode()); changed |= mCachedBrightnessInfo.checkAndSetFloat(mCachedBrightnessInfo.hbmTransitionPoint, mHbmController.getTransitionPoint()); return changed; } } void postBrightnessChangeRunnable() { mHandler.post(mOnBrightnessChangeRunnable); mCachedBrightnessInfo.brightness = brightness; mCachedBrightnessInfo.adjustedBrightness = adjustedBrightness; mCachedBrightnessInfo.brightnessMin = mHbmController.getCurrentBrightnessMin(); mCachedBrightnessInfo.brightnessMax = mHbmController.getCurrentBrightnessMax(); mCachedBrightnessInfo.hbmMode = mHbmController.getHighBrightnessMode(); mCachedBrightnessInfo.highBrightnessTransitionPoint = mHbmController.getTransitionPoint(); } } private HighBrightnessModeController createHbmControllerLocked() { Loading @@ -1661,7 +1635,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call displayUniqueId, PowerManager.BRIGHTNESS_MIN, PowerManager.BRIGHTNESS_MAX, hbmData, () -> { sendUpdatePowerStateLocked(); postBrightnessChangeRunnable(); mHandler.post(mOnBrightnessChangeRunnable); // TODO(b/192258832): Switch the HBMChangeCallback to a listener pattern. if (mAutomaticBrightnessController != null) { mAutomaticBrightnessController.update(); Loading Loading @@ -2163,7 +2137,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call private void setCurrentScreenBrightness(float brightnessValue) { if (brightnessValue != mCurrentScreenBrightnessSetting) { mCurrentScreenBrightnessSetting = brightnessValue; postBrightnessChangeRunnable(); mHandler.post(mOnBrightnessChangeRunnable); } } Loading Loading @@ -2215,7 +2189,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call return true; } private void notifyBrightnessTrackerChanged(float brightness, boolean userInitiated, private void notifyBrightnessChanged(float brightness, boolean userInitiated, boolean hadUserDataPoint) { final float brightnessInNits = convertToNits(brightness); if (mPowerRequest.useAutoBrightness && brightnessInNits >= 0.0f Loading Loading @@ -2325,17 +2299,16 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call pw.println(" mColorFadeFadesConfig=" + mColorFadeFadesConfig); pw.println(" mColorFadeEnabled=" + mColorFadeEnabled); synchronized (mCachedBrightnessInfo) { pw.println(" mCachedBrightnessInfo.brightness=" + mCachedBrightnessInfo.brightness.value); pw.println(" mCachedBrightnessInfo.brightness=" + mCachedBrightnessInfo.brightness); pw.println(" mCachedBrightnessInfo.adjustedBrightness=" + mCachedBrightnessInfo.adjustedBrightness.value); mCachedBrightnessInfo.adjustedBrightness); pw.println(" mCachedBrightnessInfo.brightnessMin=" + mCachedBrightnessInfo.brightnessMin.value); mCachedBrightnessInfo.brightnessMin); pw.println(" mCachedBrightnessInfo.brightnessMax=" + mCachedBrightnessInfo.brightnessMax.value); pw.println(" mCachedBrightnessInfo.hbmMode=" + mCachedBrightnessInfo.hbmMode.value); pw.println(" mCachedBrightnessInfo.hbmTransitionPoint=" + mCachedBrightnessInfo.hbmTransitionPoint.value); mCachedBrightnessInfo.brightnessMax); pw.println(" mCachedBrightnessInfo.hbmMode=" + mCachedBrightnessInfo.hbmMode); pw.println(" mCachedBrightnessInfo.highBrightnessTransitionPoint=" + mCachedBrightnessInfo.highBrightnessTransitionPoint); } pw.println(" mDisplayBlanksAfterDozeConfig=" + mDisplayBlanksAfterDozeConfig); pw.println(" mBrightnessBucketsInDozeConfig=" + mBrightnessBucketsInDozeConfig); Loading Loading @@ -2493,10 +2466,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call private void reportStats(float brightness) { float hbmTransitionPoint = PowerManager.BRIGHTNESS_MAX; synchronized(mCachedBrightnessInfo) { if (mCachedBrightnessInfo.hbmTransitionPoint == null) { return; } hbmTransitionPoint = mCachedBrightnessInfo.hbmTransitionPoint.value; hbmTransitionPoint = mCachedBrightnessInfo.highBrightnessTransitionPoint; } final boolean aboveTransition = brightness > hbmTransitionPoint; Loading Loading @@ -2793,31 +2763,11 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call } static class CachedBrightnessInfo { public MutableFloat brightness = new MutableFloat(PowerManager.BRIGHTNESS_INVALID_FLOAT); public MutableFloat adjustedBrightness = new MutableFloat(PowerManager.BRIGHTNESS_INVALID_FLOAT); public MutableFloat brightnessMin = new MutableFloat(PowerManager.BRIGHTNESS_INVALID_FLOAT); public MutableFloat brightnessMax = new MutableFloat(PowerManager.BRIGHTNESS_INVALID_FLOAT); public MutableInt hbmMode = new MutableInt(BrightnessInfo.HIGH_BRIGHTNESS_MODE_OFF); public MutableFloat hbmTransitionPoint = new MutableFloat(HighBrightnessModeController.HBM_TRANSITION_POINT_INVALID); public boolean checkAndSetFloat(MutableFloat mf, float f) { if (mf.value != f) { mf.value = f; return true; } return false; } public boolean checkAndSetInt(MutableInt mi, int i) { if (mi.value != i) { mi.value = i; return true; } return false; } public float brightness; public float adjustedBrightness; public float brightnessMin; public float brightnessMax; public int hbmMode; public float highBrightnessTransitionPoint; } } Loading
services/core/java/com/android/server/display/DisplayPowerController.java +36 −86 Original line number Diff line number Diff line Loading @@ -50,8 +50,6 @@ import android.os.UserHandle; import android.provider.Settings; import android.util.Log; import android.util.MathUtils; import android.util.MutableFloat; import android.util.MutableInt; import android.util.Slog; import android.util.TimeUtils; import android.view.Display; Loading Loading @@ -1382,7 +1380,6 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call // Animate the screen brightness when the screen is on or dozing. // Skip the animation when the screen is off or suspended or transition to/from VR. boolean brightnessAdjusted = false; if (!mPendingScreenOff) { if (mSkipScreenOnBrightnessRamp) { if (state == Display.STATE_ON) { Loading Loading @@ -1475,19 +1472,15 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call // slider event so notify as if the system changed the brightness. userInitiatedChange = false; } notifyBrightnessTrackerChanged(brightnessState, userInitiatedChange, notifyBrightnessChanged(brightnessState, userInitiatedChange, hadUserBrightnessPoint); } // We save the brightness info *after* the brightness setting has been changed and // adjustments made so that the brightness info reflects the latest value. brightnessAdjusted = saveBrightnessInfo(getScreenBrightnessSetting(), animateValue); saveBrightnessInfo(getScreenBrightnessSetting(), animateValue); } else { brightnessAdjusted = saveBrightnessInfo(getScreenBrightnessSetting()); } if (brightnessAdjusted) { postBrightnessChangeRunnable(); saveBrightnessInfo(getScreenBrightnessSetting()); } // Log any changes to what is currently driving the brightness setting. Loading Loading @@ -1603,48 +1596,29 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call public BrightnessInfo getBrightnessInfo() { synchronized (mCachedBrightnessInfo) { return new BrightnessInfo( mCachedBrightnessInfo.brightness.value, mCachedBrightnessInfo.adjustedBrightness.value, mCachedBrightnessInfo.brightnessMin.value, mCachedBrightnessInfo.brightnessMax.value, mCachedBrightnessInfo.hbmMode.value, mCachedBrightnessInfo.hbmTransitionPoint.value); mCachedBrightnessInfo.brightness, mCachedBrightnessInfo.adjustedBrightness, mCachedBrightnessInfo.brightnessMin, mCachedBrightnessInfo.brightnessMax, mCachedBrightnessInfo.hbmMode, mCachedBrightnessInfo.highBrightnessTransitionPoint); } } private boolean saveBrightnessInfo(float brightness) { return saveBrightnessInfo(brightness, brightness); private void saveBrightnessInfo(float brightness) { saveBrightnessInfo(brightness, brightness); } private boolean saveBrightnessInfo(float brightness, float adjustedBrightness) { private void saveBrightnessInfo(float brightness, float adjustedBrightness) { synchronized (mCachedBrightnessInfo) { boolean changed = false; changed |= mCachedBrightnessInfo.checkAndSetFloat(mCachedBrightnessInfo.brightness, brightness); changed |= mCachedBrightnessInfo.checkAndSetFloat(mCachedBrightnessInfo.adjustedBrightness, adjustedBrightness); changed |= mCachedBrightnessInfo.checkAndSetFloat(mCachedBrightnessInfo.brightnessMin, mHbmController.getCurrentBrightnessMin()); changed |= mCachedBrightnessInfo.checkAndSetFloat(mCachedBrightnessInfo.brightnessMax, mHbmController.getCurrentBrightnessMax()); changed |= mCachedBrightnessInfo.checkAndSetInt(mCachedBrightnessInfo.hbmMode, mHbmController.getHighBrightnessMode()); changed |= mCachedBrightnessInfo.checkAndSetFloat(mCachedBrightnessInfo.hbmTransitionPoint, mHbmController.getTransitionPoint()); return changed; } } void postBrightnessChangeRunnable() { mHandler.post(mOnBrightnessChangeRunnable); mCachedBrightnessInfo.brightness = brightness; mCachedBrightnessInfo.adjustedBrightness = adjustedBrightness; mCachedBrightnessInfo.brightnessMin = mHbmController.getCurrentBrightnessMin(); mCachedBrightnessInfo.brightnessMax = mHbmController.getCurrentBrightnessMax(); mCachedBrightnessInfo.hbmMode = mHbmController.getHighBrightnessMode(); mCachedBrightnessInfo.highBrightnessTransitionPoint = mHbmController.getTransitionPoint(); } } private HighBrightnessModeController createHbmControllerLocked() { Loading @@ -1661,7 +1635,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call displayUniqueId, PowerManager.BRIGHTNESS_MIN, PowerManager.BRIGHTNESS_MAX, hbmData, () -> { sendUpdatePowerStateLocked(); postBrightnessChangeRunnable(); mHandler.post(mOnBrightnessChangeRunnable); // TODO(b/192258832): Switch the HBMChangeCallback to a listener pattern. if (mAutomaticBrightnessController != null) { mAutomaticBrightnessController.update(); Loading Loading @@ -2163,7 +2137,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call private void setCurrentScreenBrightness(float brightnessValue) { if (brightnessValue != mCurrentScreenBrightnessSetting) { mCurrentScreenBrightnessSetting = brightnessValue; postBrightnessChangeRunnable(); mHandler.post(mOnBrightnessChangeRunnable); } } Loading Loading @@ -2215,7 +2189,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call return true; } private void notifyBrightnessTrackerChanged(float brightness, boolean userInitiated, private void notifyBrightnessChanged(float brightness, boolean userInitiated, boolean hadUserDataPoint) { final float brightnessInNits = convertToNits(brightness); if (mPowerRequest.useAutoBrightness && brightnessInNits >= 0.0f Loading Loading @@ -2325,17 +2299,16 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call pw.println(" mColorFadeFadesConfig=" + mColorFadeFadesConfig); pw.println(" mColorFadeEnabled=" + mColorFadeEnabled); synchronized (mCachedBrightnessInfo) { pw.println(" mCachedBrightnessInfo.brightness=" + mCachedBrightnessInfo.brightness.value); pw.println(" mCachedBrightnessInfo.brightness=" + mCachedBrightnessInfo.brightness); pw.println(" mCachedBrightnessInfo.adjustedBrightness=" + mCachedBrightnessInfo.adjustedBrightness.value); mCachedBrightnessInfo.adjustedBrightness); pw.println(" mCachedBrightnessInfo.brightnessMin=" + mCachedBrightnessInfo.brightnessMin.value); mCachedBrightnessInfo.brightnessMin); pw.println(" mCachedBrightnessInfo.brightnessMax=" + mCachedBrightnessInfo.brightnessMax.value); pw.println(" mCachedBrightnessInfo.hbmMode=" + mCachedBrightnessInfo.hbmMode.value); pw.println(" mCachedBrightnessInfo.hbmTransitionPoint=" + mCachedBrightnessInfo.hbmTransitionPoint.value); mCachedBrightnessInfo.brightnessMax); pw.println(" mCachedBrightnessInfo.hbmMode=" + mCachedBrightnessInfo.hbmMode); pw.println(" mCachedBrightnessInfo.highBrightnessTransitionPoint=" + mCachedBrightnessInfo.highBrightnessTransitionPoint); } pw.println(" mDisplayBlanksAfterDozeConfig=" + mDisplayBlanksAfterDozeConfig); pw.println(" mBrightnessBucketsInDozeConfig=" + mBrightnessBucketsInDozeConfig); Loading Loading @@ -2493,10 +2466,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call private void reportStats(float brightness) { float hbmTransitionPoint = PowerManager.BRIGHTNESS_MAX; synchronized(mCachedBrightnessInfo) { if (mCachedBrightnessInfo.hbmTransitionPoint == null) { return; } hbmTransitionPoint = mCachedBrightnessInfo.hbmTransitionPoint.value; hbmTransitionPoint = mCachedBrightnessInfo.highBrightnessTransitionPoint; } final boolean aboveTransition = brightness > hbmTransitionPoint; Loading Loading @@ -2793,31 +2763,11 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call } static class CachedBrightnessInfo { public MutableFloat brightness = new MutableFloat(PowerManager.BRIGHTNESS_INVALID_FLOAT); public MutableFloat adjustedBrightness = new MutableFloat(PowerManager.BRIGHTNESS_INVALID_FLOAT); public MutableFloat brightnessMin = new MutableFloat(PowerManager.BRIGHTNESS_INVALID_FLOAT); public MutableFloat brightnessMax = new MutableFloat(PowerManager.BRIGHTNESS_INVALID_FLOAT); public MutableInt hbmMode = new MutableInt(BrightnessInfo.HIGH_BRIGHTNESS_MODE_OFF); public MutableFloat hbmTransitionPoint = new MutableFloat(HighBrightnessModeController.HBM_TRANSITION_POINT_INVALID); public boolean checkAndSetFloat(MutableFloat mf, float f) { if (mf.value != f) { mf.value = f; return true; } return false; } public boolean checkAndSetInt(MutableInt mi, int i) { if (mi.value != i) { mi.value = i; return true; } return false; } public float brightness; public float adjustedBrightness; public float brightnessMin; public float brightnessMax; public int hbmMode; public float highBrightnessTransitionPoint; } }