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

Commit 1bda2336 authored by Christine Franks's avatar Christine Franks Committed by Automerger Merge Worker
Browse files

Merge "Make DWB light mode availability configurable" into tm-qpr-dev am: 463df2a2

parents 5799d82d 463df2a2
Loading
Loading
Loading
Loading
+2 −0
Original line number Original line Diff line number Diff line
@@ -935,6 +935,8 @@
        <!-- Nominal White Z --> <item>1.089058</item>
        <!-- Nominal White Z --> <item>1.089058</item>
    </string-array>
    </string-array>


    <!-- Boolean indicating whether light mode is allowed when DWB is turned on. -->
    <bool name="config_displayWhiteBalanceLightModeAllowed">true</bool>


    <!-- Indicate available ColorDisplayManager.COLOR_MODE_xxx. -->
    <!-- Indicate available ColorDisplayManager.COLOR_MODE_xxx. -->
    <integer-array name="config_availableColorModes">
    <integer-array name="config_availableColorModes">
+1 −0
Original line number Original line Diff line number Diff line
@@ -3407,6 +3407,7 @@
  <java-symbol type="integer" name="config_displayWhiteBalanceColorTemperatureDefault" />
  <java-symbol type="integer" name="config_displayWhiteBalanceColorTemperatureDefault" />
  <java-symbol type="array" name="config_displayWhiteBalanceDisplayPrimaries" />
  <java-symbol type="array" name="config_displayWhiteBalanceDisplayPrimaries" />
  <java-symbol type="array" name="config_displayWhiteBalanceDisplayNominalWhite" />
  <java-symbol type="array" name="config_displayWhiteBalanceDisplayNominalWhite" />
  <java-symbol type="bool" name="config_displayWhiteBalanceLightModeAllowed" />


  <!-- Default first user restrictions -->
  <!-- Default first user restrictions -->
  <java-symbol type="array" name="config_defaultFirstUserRestrictions" />
  <java-symbol type="array" name="config_defaultFirstUserRestrictions" />
+8 −1
Original line number Original line Diff line number Diff line
@@ -740,7 +740,8 @@ public final class ColorDisplayService extends SystemService {
        mDisplayWhiteBalanceTintController.setActivated(isDisplayWhiteBalanceSettingEnabled()
        mDisplayWhiteBalanceTintController.setActivated(isDisplayWhiteBalanceSettingEnabled()
                && !mNightDisplayTintController.isActivated()
                && !mNightDisplayTintController.isActivated()
                && !isAccessibilityEnabled()
                && !isAccessibilityEnabled()
                && dtm.needsLinearColorMatrix());
                && dtm.needsLinearColorMatrix()
                && mDisplayWhiteBalanceTintController.isAllowed());
        boolean activated = mDisplayWhiteBalanceTintController.isActivated();
        boolean activated = mDisplayWhiteBalanceTintController.isActivated();


        if (mDisplayWhiteBalanceListener != null && oldActivated != activated) {
        if (mDisplayWhiteBalanceListener != null && oldActivated != activated) {
@@ -1453,6 +1454,12 @@ public final class ColorDisplayService extends SystemService {
     */
     */
    public class ColorDisplayServiceInternal {
    public class ColorDisplayServiceInternal {


        /** Sets whether DWB should be allowed in the current state. */
        public void setDisplayWhiteBalanceAllowed(boolean allowed)  {
            mDisplayWhiteBalanceTintController.setAllowed(allowed);
            updateDisplayWhiteBalanceStatus();
        }

        /**
        /**
         * Set the current CCT value for the display white balance transform, and if the transform
         * Set the current CCT value for the display white balance transform, and if the transform
         * is enabled, apply it.
         * is enabled, apply it.
+14 −0
Original line number Original line Diff line number Diff line
@@ -61,12 +61,17 @@ final class DisplayWhiteBalanceTintController extends TintController {
    boolean mSetUp = false;
    boolean mSetUp = false;
    private float[] mMatrixDisplayWhiteBalance = new float[16];
    private float[] mMatrixDisplayWhiteBalance = new float[16];
    private Boolean mIsAvailable;
    private Boolean mIsAvailable;
    // This feature becomes disallowed if the device is in an unsupported strong/light state.
    private boolean mIsAllowed = true;


    @Override
    @Override
    public void setUp(Context context, boolean needsLinear) {
    public void setUp(Context context, boolean needsLinear) {
        mSetUp = false;
        mSetUp = false;
        final Resources res = context.getResources();
        final Resources res = context.getResources();


        // Initialize with the config value for light mode, so it starts in the right state.
        setAllowed(res.getBoolean(R.bool.config_displayWhiteBalanceLightModeAllowed));

        ColorSpace.Rgb displayColorSpaceRGB = getDisplayColorSpaceFromSurfaceControl();
        ColorSpace.Rgb displayColorSpaceRGB = getDisplayColorSpaceFromSurfaceControl();
        if (displayColorSpaceRGB == null) {
        if (displayColorSpaceRGB == null) {
            Slog.w(ColorDisplayService.TAG,
            Slog.w(ColorDisplayService.TAG,
@@ -248,6 +253,7 @@ final class DisplayWhiteBalanceTintController extends TintController {
                    + matrixToString(mDisplayColorSpaceRGB.getInverseTransform(), 3));
                    + matrixToString(mDisplayColorSpaceRGB.getInverseTransform(), 3));
            pw.println("    mMatrixDisplayWhiteBalance = "
            pw.println("    mMatrixDisplayWhiteBalance = "
                    + matrixToString(mMatrixDisplayWhiteBalance, 4));
                    + matrixToString(mMatrixDisplayWhiteBalance, 4));
            pw.println("    mIsAllowed = " + mIsAllowed);
        }
        }
    }
    }


@@ -263,6 +269,14 @@ final class DisplayWhiteBalanceTintController extends TintController {
        }
        }
    }
    }


    public void setAllowed(boolean allowed) {
        mIsAllowed = allowed;
    }

    public boolean isAllowed() {
        return mIsAllowed;
    }

    private ColorSpace.Rgb makeRgbColorSpaceFromXYZ(float[] redGreenBlueXYZ, float[] whiteXYZ) {
    private ColorSpace.Rgb makeRgbColorSpaceFromXYZ(float[] redGreenBlueXYZ, float[] whiteXYZ) {
        return new ColorSpace.Rgb(
        return new ColorSpace.Rgb(
                "Display Color Space",
                "Display Color Space",
+9 −1
Original line number Original line Diff line number Diff line
@@ -65,6 +65,8 @@ public class DisplayWhiteBalanceController implements
    // this effect.
    // this effect.
    private final float mHighLightAmbientColorTemperature;
    private final float mHighLightAmbientColorTemperature;


    private final boolean mLightModeAllowed;

    private float mAmbientColorTemperature;
    private float mAmbientColorTemperature;
    @VisibleForTesting
    @VisibleForTesting
    float mPendingAmbientColorTemperature;
    float mPendingAmbientColorTemperature;
@@ -148,6 +150,8 @@ public class DisplayWhiteBalanceController implements
     * @param displayColorTemperatures
     * @param displayColorTemperatures
     *      The display color temperatures used to map the ambient color temperature to the display
     *      The display color temperatures used to map the ambient color temperature to the display
     *      color temperature (or null if no mapping is necessary).
     *      color temperature (or null if no mapping is necessary).
     * @param lightModeAllowed
     *      Whether a lighter version should be applied when Strong Mode is not enabled.
     *
     *
     * @throws NullPointerException
     * @throws NullPointerException
     *      - brightnessSensor is null;
     *      - brightnessSensor is null;
@@ -171,7 +175,8 @@ public class DisplayWhiteBalanceController implements
            float[] ambientColorTemperatures,
            float[] ambientColorTemperatures,
            float[] displayColorTemperatures,
            float[] displayColorTemperatures,
            float[] strongAmbientColorTemperatures,
            float[] strongAmbientColorTemperatures,
            float[] strongDisplayColorTemperatures) {
            float[] strongDisplayColorTemperatures,
            boolean lightModeAllowed) {
        validateArguments(brightnessSensor, brightnessFilter, colorTemperatureSensor,
        validateArguments(brightnessSensor, brightnessFilter, colorTemperatureSensor,
                colorTemperatureFilter, throttler);
                colorTemperatureFilter, throttler);
        mBrightnessSensor = brightnessSensor;
        mBrightnessSensor = brightnessSensor;
@@ -186,6 +191,7 @@ public class DisplayWhiteBalanceController implements
        mLastAmbientColorTemperature = -1.0f;
        mLastAmbientColorTemperature = -1.0f;
        mAmbientColorTemperatureHistory = new History(/* size= */ 50);
        mAmbientColorTemperatureHistory = new History(/* size= */ 50);
        mAmbientColorTemperatureOverride = -1.0f;
        mAmbientColorTemperatureOverride = -1.0f;
        mLightModeAllowed = lightModeAllowed;


        try {
        try {
            mLowLightAmbientBrightnessToBiasSpline = new Spline.LinearSpline(
            mLowLightAmbientBrightnessToBiasSpline = new Spline.LinearSpline(
@@ -273,6 +279,8 @@ public class DisplayWhiteBalanceController implements
     */
     */
    public void setStrongModeEnabled(boolean enabled) {
    public void setStrongModeEnabled(boolean enabled) {
        mStrongModeEnabled = enabled;
        mStrongModeEnabled = enabled;
        mColorDisplayServiceInternal.setDisplayWhiteBalanceAllowed(mLightModeAllowed
                || mStrongModeEnabled);
        if (mEnabled) {
        if (mEnabled) {
            updateAmbientColorTemperature();
            updateAmbientColorTemperature();
            updateDisplayColorTemperature();
            updateDisplayColorTemperature();
Loading