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

Commit 4383b070 authored by Fiona Campbell's avatar Fiona Campbell Committed by Automerger Merge Worker
Browse files

Merge "Clean up framework brightness system" into sc-dev am: 2bb1f86a

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15175190

Change-Id: Iaeb3d421888359b0d0957103c3bf32ba8c4f8d06
parents 79aba1cc 2bb1f86a
Loading
Loading
Loading
Loading
+10 −0
Original line number Original line Diff line number Diff line
@@ -154,10 +154,20 @@ public class BrightnessSynchronizer {
        }
        }
    }
    }


    /**
     * Gets the stored screen brightness float value from the display brightness setting.
     * @return brightness
     */
    private float getScreenBrightnessFloat() {
    private float getScreenBrightnessFloat() {
        return mDisplayManager.getBrightness(Display.DEFAULT_DISPLAY);
        return mDisplayManager.getBrightness(Display.DEFAULT_DISPLAY);
    }
    }


    /**
     * Gets the stored screen brightness int from the system settings.
     * @param context for accessing settings
     *
     * @return brightness
     */
    private static int getScreenBrightnessInt(Context context) {
    private static int getScreenBrightnessInt(Context context) {
        return Settings.System.getIntForUser(context.getContentResolver(),
        return Settings.System.getIntForUser(context.getContentResolver(),
                Settings.System.SCREEN_BRIGHTNESS, PowerManager.BRIGHTNESS_INVALID,
                Settings.System.SCREEN_BRIGHTNESS, PowerManager.BRIGHTNESS_INVALID,
+20 −59
Original line number Original line Diff line number Diff line
@@ -17,19 +17,14 @@
package com.android.server.display;
package com.android.server.display;


import android.annotation.NonNull;
import android.annotation.NonNull;
import android.content.Context;
import android.database.ContentObserver;
import android.net.Uri;
import android.os.Handler;
import android.os.Handler;
import android.os.Looper;
import android.os.Looper;
import android.os.Message;
import android.os.Message;
import android.os.PowerManager;
import android.os.UserHandle;
import android.provider.Settings;
import android.util.Slog;
import android.util.Slog;
import android.view.Display;


import java.util.concurrent.CopyOnWriteArrayList;
import com.android.internal.annotations.GuardedBy;

import java.util.concurrent.CopyOnWriteArraySet;


/**
/**
 * Saves brightness to a persistent data store, enabling each logical display to have its own
 * Saves brightness to a persistent data store, enabling each logical display to have its own
@@ -39,14 +34,11 @@ public class BrightnessSetting {
    private static final String TAG = "BrightnessSetting";
    private static final String TAG = "BrightnessSetting";


    private static final int MSG_BRIGHTNESS_CHANGED = 1;
    private static final int MSG_BRIGHTNESS_CHANGED = 1;
    private static final Uri BRIGHTNESS_FLOAT_URI =

            Settings.System.getUriFor(Settings.System.SCREEN_BRIGHTNESS_FLOAT);
    private final PersistentDataStore mPersistentDataStore;
    private final PersistentDataStore mPersistentDataStore;
    private final DisplayManagerService.SyncRoot mSyncRoot;


    private final boolean mIsDefaultDisplay;
    private final Context mContext;
    private final LogicalDisplay mLogicalDisplay;
    private final LogicalDisplay mLogicalDisplay;
    private final Object mLock = new Object();


    private final Handler mHandler = new Handler(Looper.getMainLooper()) {
    private final Handler mHandler = new Handler(Looper.getMainLooper()) {
        @Override
        @Override
@@ -58,37 +50,20 @@ public class BrightnessSetting {
        }
        }
    };
    };


    private final ContentObserver mBrightnessSettingsObserver = new ContentObserver(mHandler) {
    private final CopyOnWriteArraySet<BrightnessSettingListener> mListeners =
        @Override
            new CopyOnWriteArraySet<>();
        public void onChange(boolean selfChange, Uri uri) {
            if (selfChange) {
                return;
            }
            if (BRIGHTNESS_FLOAT_URI.equals(uri)) {
                float brightness = getScreenBrightnessSettingFloat();
                setBrightness(brightness, true);
            }
        }
    };

    private final CopyOnWriteArrayList<BrightnessSettingListener> mListeners =
            new CopyOnWriteArrayList<BrightnessSettingListener>();


    @GuardedBy("mSyncRoot")
    private float mBrightness;
    private float mBrightness;


    BrightnessSetting(@NonNull PersistentDataStore persistentDataStore,
    BrightnessSetting(@NonNull PersistentDataStore persistentDataStore,
            @NonNull LogicalDisplay logicalDisplay,
            @NonNull LogicalDisplay logicalDisplay,
            @NonNull Context context) {
            DisplayManagerService.SyncRoot syncRoot) {
        mPersistentDataStore = persistentDataStore;
        mPersistentDataStore = persistentDataStore;
        mLogicalDisplay = logicalDisplay;
        mLogicalDisplay = logicalDisplay;
        mContext = context;
        mIsDefaultDisplay = mLogicalDisplay.getDisplayIdLocked() == Display.DEFAULT_DISPLAY;
        mBrightness = mPersistentDataStore.getBrightness(
        mBrightness = mPersistentDataStore.getBrightness(
                mLogicalDisplay.getPrimaryDisplayDeviceLocked());
                mLogicalDisplay.getPrimaryDisplayDeviceLocked());
        if (mIsDefaultDisplay) {
        mSyncRoot = syncRoot;
            mContext.getContentResolver().registerContentObserver(BRIGHTNESS_FLOAT_URI,
                    false, mBrightnessSettingsObserver);
        }
    }
    }


    /**
    /**
@@ -97,16 +72,19 @@ public class BrightnessSetting {
     * @return brightness for the current display
     * @return brightness for the current display
     */
     */
    public float getBrightness() {
    public float getBrightness() {
        synchronized (mSyncRoot) {
            return mBrightness;
            return mBrightness;
        }
        }
    }


    /**
    /**
     * Registers listener for brightness setting change events.
     * Registers listener for brightness setting change events.
     */
     */
    public void registerListener(BrightnessSettingListener l) {
    public void registerListener(BrightnessSettingListener l) {
        if (!mListeners.contains(l)) {
        if (mListeners.contains(l)) {
            mListeners.add(l);
            Slog.wtf(TAG, "Duplicate Listener added");
        }
        }
        mListeners.add(l);
    }
    }


    /**
    /**
@@ -119,27 +97,16 @@ public class BrightnessSetting {
    }
    }


    void setBrightness(float brightness) {
    void setBrightness(float brightness) {
        setBrightness(brightness, false);
    }

    private void setBrightness(float brightness, boolean isFromSystemSetting) {
        if (brightness == mBrightness) {
            return;
        }
        if (Float.isNaN(brightness)) {
        if (Float.isNaN(brightness)) {
            Slog.w(TAG, "Attempting to set invalid brightness");
            Slog.w(TAG, "Attempting to set invalid brightness");
            return;
            return;
        }
        }
        synchronized (mLock) {
        synchronized (mSyncRoot) {
            if (brightness == mBrightness) {
                return;
            }


            mBrightness = brightness;
            mBrightness = brightness;

            // If it didn't come from us
            if (mIsDefaultDisplay && !isFromSystemSetting) {
                Settings.System.putFloatForUser(mContext.getContentResolver(),
                        Settings.System.SCREEN_BRIGHTNESS_FLOAT, brightness,
                        UserHandle.USER_CURRENT);
            }
            mPersistentDataStore.setBrightness(mLogicalDisplay.getPrimaryDisplayDeviceLocked(),
            mPersistentDataStore.setBrightness(mLogicalDisplay.getPrimaryDisplayDeviceLocked(),
                    brightness);
                    brightness);
            int toSend = Float.floatToIntBits(mBrightness);
            int toSend = Float.floatToIntBits(mBrightness);
@@ -148,12 +115,6 @@ public class BrightnessSetting {
        }
        }
    }
    }


    private float getScreenBrightnessSettingFloat() {
        return Settings.System.getFloatForUser(mContext.getContentResolver(),
                Settings.System.SCREEN_BRIGHTNESS_FLOAT, PowerManager.BRIGHTNESS_INVALID_FLOAT,
                UserHandle.USER_CURRENT);
    }

    private void notifyListeners(float brightness) {
    private void notifyListeners(float brightness) {
        for (BrightnessSettingListener l : mListeners) {
        for (BrightnessSettingListener l : mListeners) {
            l.onBrightnessChanged(brightness);
            l.onBrightnessChanged(brightness);
+1 −11
Original line number Original line Diff line number Diff line
@@ -399,9 +399,6 @@ public final class DisplayManagerService extends SystemService {
    // Receives notifications about changes to Settings.
    // Receives notifications about changes to Settings.
    private SettingsObserver mSettingsObserver;
    private SettingsObserver mSettingsObserver;


    // Received notifications of the device-state action (such as "fold", "unfold")
    private DeviceStateManager mDeviceStateManager;

    private final boolean mAllowNonNativeRefreshRateOverride;
    private final boolean mAllowNonNativeRefreshRateOverride;


    private final BrightnessSynchronizer mBrightnessSynchronizer;
    private final BrightnessSynchronizer mBrightnessSynchronizer;
@@ -1236,13 +1233,6 @@ public final class DisplayManagerService extends SystemService {
        adapter.registerLocked();
        adapter.registerLocked();
    }
    }


    @VisibleForTesting
    void handleLogicalDisplayAdded(LogicalDisplay display) {
        synchronized (mSyncRoot) {
            handleLogicalDisplayAddedLocked(display);
        }
    }

    private void handleLogicalDisplayAddedLocked(LogicalDisplay display) {
    private void handleLogicalDisplayAddedLocked(LogicalDisplay display) {
        final DisplayDevice device = display.getPrimaryDisplayDeviceLocked();
        final DisplayDevice device = display.getPrimaryDisplayDeviceLocked();
        final int displayId = display.getDisplayIdLocked();
        final int displayId = display.getDisplayIdLocked();
@@ -2107,7 +2097,7 @@ public final class DisplayManagerService extends SystemService {
        }
        }


        final BrightnessSetting brightnessSetting = new BrightnessSetting(mPersistentDataStore,
        final BrightnessSetting brightnessSetting = new BrightnessSetting(mPersistentDataStore,
                display, mContext);
                display, mSyncRoot);
        final DisplayPowerController displayPowerController = new DisplayPowerController(
        final DisplayPowerController displayPowerController = new DisplayPowerController(
                mContext, mDisplayPowerCallbacks, mPowerHandler, mSensorManager,
                mContext, mDisplayPowerCallbacks, mPowerHandler, mSensorManager,
                mDisplayBlanker, display, mBrightnessTracker, brightnessSetting,
                mDisplayBlanker, display, mBrightnessTracker, brightnessSetting,
+0 −3
Original line number Original line Diff line number Diff line
@@ -149,9 +149,6 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
    private static final int REPORTED_TO_POLICY_SCREEN_ON = 2;
    private static final int REPORTED_TO_POLICY_SCREEN_ON = 2;
    private static final int REPORTED_TO_POLICY_SCREEN_TURNING_OFF = 3;
    private static final int REPORTED_TO_POLICY_SCREEN_TURNING_OFF = 3;


    private static final Uri BRIGHTNESS_FLOAT_URI =
            Settings.System.getUriFor(Settings.System.SCREEN_BRIGHTNESS_FLOAT);

    private final Object mLock = new Object();
    private final Object mLock = new Object();


    private final Context mContext;
    private final Context mContext;