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

Commit 218e656e authored by Christine Franks's avatar Christine Franks
Browse files

Remove gap applying night display and color mode

Bug: 68268324
Test: make -j100
Change-Id: I9be6fe350728944f0e157c1b8928ca1f5b65f4d8
parent 560d5f85
Loading
Loading
Loading
Loading
+15 −8
Original line number Diff line number Diff line
@@ -231,7 +231,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);
@@ -329,17 +329,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();