Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2e8e9d39 authored by Fiona Campbell's avatar Fiona Campbell
Browse files

Persist screen brightness setting through upgrade

The screen brightness float setting initially did not exist when
upgrading the device software. This change ensures the float and int
values are synchronised on the system start-up.

Bug: 174508435
Test: manual - set autobrightness off, upgrade from Q to R, and check
brightness value in settings.

Change-Id: I2a3b996c8747e3c5f1d181bbdd438c70bf23d08b
Merged-In: I2a3b996c8747e3c5f1d181bbdd438c70bf23d08b
(cherry picked from commit 96f43f21b3a3021762c2d213d8958590127cae36)
parent f5d8e97d
Loading
Loading
Loading
Loading
+23 −2
Original line number Diff line number Diff line
@@ -78,6 +78,26 @@ public class BrightnessSynchronizer{
        mContext = context;
        mBrightnessSyncObserver = new BrightnessSyncObserver(mHandler);
        mBrightnessSyncObserver.startObserving();

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

        if (!Float.isNaN(currentFloatBrightness)) {
            updateBrightnessIntFromFloat(currentFloatBrightness);
        } else if (currentIntBrightness != -1) {
            updateBrightnessFloatFromInt(currentIntBrightness);
        } else {
            final float defaultBrightness = mContext.getResources().getFloat(
                    com.android.internal.R.dimen.config_screenBrightnessSettingDefaultFloat);
            Settings.System.putFloatForUser(mContext.getContentResolver(),
                    Settings.System.SCREEN_BRIGHTNESS_FLOAT, defaultBrightness,
                    UserHandle.USER_CURRENT);

        }
    }

    /**
@@ -166,7 +186,8 @@ public class BrightnessSynchronizer{

    private static int getScreenBrightnessInt(Context context) {
        return Settings.System.getIntForUser(context.getContentResolver(),
                Settings.System.SCREEN_BRIGHTNESS, 0, UserHandle.USER_CURRENT);
                Settings.System.SCREEN_BRIGHTNESS, PowerManager.BRIGHTNESS_INVALID,
                UserHandle.USER_CURRENT);
    }

    private float mPreferredSettingValue;