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);