From d7bfe1f31042babcb28c89c454fb7ee93a66b283 Mon Sep 17 00:00:00 2001 From: Fiona Campbell Date: Fri, 30 Oct 2020 12:26:32 +0000 Subject: [PATCH] Clean up BrightnessSynchronizer Create a startSynchronizing() method rather than having this code in the constructor. This makes it cleaner and its actions more explicit. Bug: none Test: manual Change-Id: I6b84274639ad719ed877f1d04e6621717f860677 --- .../internal/BrightnessSynchronizer.java | 32 +++++++++++-------- .../display/DisplayPowerController.java | 1 + 2 files changed, 20 insertions(+), 13 deletions(-) diff --git a/core/java/com/android/internal/BrightnessSynchronizer.java b/core/java/com/android/internal/BrightnessSynchronizer.java index 15463cb341571..9049ca56bc53f 100644 --- a/core/java/com/android/internal/BrightnessSynchronizer.java +++ b/core/java/com/android/internal/BrightnessSynchronizer.java @@ -73,18 +73,26 @@ public class BrightnessSynchronizer { } }; - public BrightnessSynchronizer(Context context) { - final BrightnessSyncObserver mBrightnessSyncObserver; - mContext = context; - mBrightnessSyncObserver = new BrightnessSyncObserver(mHandler); - mBrightnessSyncObserver.startObserving(); + private float mPreferredSettingValue; - // It is possible for the system to start up with the int and float values not - // synchronized. So we force an update to the int value, since float is the source - // of truth. Fallback to int value, if float is invalid. If both are invalid, use default - // float value from config. - final float currentFloatBrightness = getScreenBrightnessFloat(context); - final int currentIntBrightness = getScreenBrightnessInt(context); + public BrightnessSynchronizer(Context context) { + mContext = context; + } + + /** + * Starts brightnessSyncObserver to ensure that the float and int brightness values stay + * in sync. + * This also ensures that values are synchronized at system start up too. + * So we force an update to the int value, since float is the source of truth. Fallback to int + * value, if float is invalid. If both are invalid, use default float value from config. + */ + public void startSynchronizing() { + final BrightnessSyncObserver brightnessSyncObserver; + brightnessSyncObserver = new BrightnessSyncObserver(mHandler); + brightnessSyncObserver.startObserving(); + + final float currentFloatBrightness = getScreenBrightnessFloat(mContext); + final int currentIntBrightness = getScreenBrightnessInt(mContext); if (!Float.isNaN(currentFloatBrightness)) { updateBrightnessIntFromFloat(currentFloatBrightness); @@ -156,8 +164,6 @@ public class BrightnessSynchronizer { UserHandle.USER_CURRENT); } - private float mPreferredSettingValue; - /** * Updates the float setting based on a passed in int value. This is called whenever the int * setting changes. mWriteHistory keeps a record of the values that been written to the settings diff --git a/services/core/java/com/android/server/display/DisplayPowerController.java b/services/core/java/com/android/server/display/DisplayPowerController.java index 1a62b9d027eca..09c9aab024a1f 100644 --- a/services/core/java/com/android/server/display/DisplayPowerController.java +++ b/services/core/java/com/android/server/display/DisplayPowerController.java @@ -417,6 +417,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call mBlanker = blanker; mContext = context; mBrightnessSynchronizer = new BrightnessSynchronizer(context); + mBrightnessSynchronizer.startSynchronizing(); mDisplayId = displayId; PowerManager pm = context.getSystemService(PowerManager.class);