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

Commit c7e756a0 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Remove gap applying night display and color mode"

parents b6c92f00 218e656e
Loading
Loading
Loading
Loading
+15 −8
Original line number Diff line number Diff line
@@ -189,7 +189,7 @@ public final class ColorDisplayService extends SystemService
        mController = new ColorDisplayController(getContext(), mCurrentUser);
        mController.setListener(this);

        setCoefficientMatrix(getContext());
        setCoefficientMatrix(getContext(), DisplayTransformManager.isNativeModeEnabled());

        // Prepare color transformation matrix.
        setMatrix(mController.getColorTemperature(), mMatrixNight);
@@ -287,17 +287,24 @@ public final class ColorDisplayService extends SystemService
    }

    @Override
    public void onDisplayColorModeChanged(int colorMode) {
        final DisplayTransformManager dtm = getLocalService(DisplayTransformManager.class);
        dtm.setColorMode(colorMode);
    public void onDisplayColorModeChanged(int mode) {
        // Cancel the night display tint animator if it's running.
        if (mColorMatrixAnimator != null) {
            mColorMatrixAnimator.cancel();
        }

        setCoefficientMatrix(getContext());
        setCoefficientMatrix(getContext(), mode == ColorDisplayController.COLOR_MODE_SATURATED);
        setMatrix(mController.getColorTemperature(), mMatrixNight);
        applyTint(true);

        final DisplayTransformManager dtm = getLocalService(DisplayTransformManager.class);
        dtm.setColorMode(mode, mIsActivated ? mMatrixNight : MATRIX_IDENTITY);
    }

    private void setCoefficientMatrix(Context context) {
        final boolean isNative = DisplayTransformManager.isNativeModeEnabled();
    /**
     * Set coefficients based on native mode. Use DisplayTransformManager#isNativeModeEnabled while
     * setting is stable; when setting is changing, pass native mode selection directly.
     */
    private void setCoefficientMatrix(Context context, boolean isNative) {
        final String[] coefficients = context.getResources().getStringArray(isNative
                ? R.array.config_nightDisplayColorTemperatureCoefficientsNative
                : R.array.config_nightDisplayColorTemperatureCoefficients);
+2 −1
Original line number Diff line number Diff line
@@ -222,7 +222,7 @@ public class DisplayTransformManager {
        return SystemProperties.getBoolean(PERSISTENT_PROPERTY_NATIVE_MODE, false);
    }

    public boolean setColorMode(int colorMode) {
    public boolean setColorMode(int colorMode, float[] nightDisplayMatrix) {
        if (colorMode == ColorDisplayController.COLOR_MODE_NATURAL) {
            applySaturation(COLOR_SATURATION_NATURAL);
            setNativeMode(false);
@@ -233,6 +233,7 @@ public class DisplayTransformManager {
            applySaturation(COLOR_SATURATION_NATURAL);
            setNativeMode(true);
        }
        setColorMatrix(LEVEL_COLOR_MATRIX_NIGHT_DISPLAY, nightDisplayMatrix);

        updateConfiguration();