Loading services/core/java/com/android/server/display/ColorDisplayService.java +15 −8 Original line number Original line Diff line number Diff line Loading @@ -189,7 +189,7 @@ public final class ColorDisplayService extends SystemService mController = new ColorDisplayController(getContext(), mCurrentUser); mController = new ColorDisplayController(getContext(), mCurrentUser); mController.setListener(this); mController.setListener(this); setCoefficientMatrix(getContext()); setCoefficientMatrix(getContext(), DisplayTransformManager.isNativeModeEnabled()); // Prepare color transformation matrix. // Prepare color transformation matrix. setMatrix(mController.getColorTemperature(), mMatrixNight); setMatrix(mController.getColorTemperature(), mMatrixNight); Loading Loading @@ -287,17 +287,24 @@ public final class ColorDisplayService extends SystemService } } @Override @Override public void onDisplayColorModeChanged(int colorMode) { public void onDisplayColorModeChanged(int mode) { final DisplayTransformManager dtm = getLocalService(DisplayTransformManager.class); // Cancel the night display tint animator if it's running. dtm.setColorMode(colorMode); if (mColorMatrixAnimator != null) { mColorMatrixAnimator.cancel(); } setCoefficientMatrix(getContext()); setCoefficientMatrix(getContext(), mode == ColorDisplayController.COLOR_MODE_SATURATED); setMatrix(mController.getColorTemperature(), mMatrixNight); 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 final String[] coefficients = context.getResources().getStringArray(isNative ? R.array.config_nightDisplayColorTemperatureCoefficientsNative ? R.array.config_nightDisplayColorTemperatureCoefficientsNative : R.array.config_nightDisplayColorTemperatureCoefficients); : R.array.config_nightDisplayColorTemperatureCoefficients); Loading services/core/java/com/android/server/display/DisplayTransformManager.java +2 −1 Original line number Original line Diff line number Diff line Loading @@ -222,7 +222,7 @@ public class DisplayTransformManager { return SystemProperties.getBoolean(PERSISTENT_PROPERTY_NATIVE_MODE, false); 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) { if (colorMode == ColorDisplayController.COLOR_MODE_NATURAL) { applySaturation(COLOR_SATURATION_NATURAL); applySaturation(COLOR_SATURATION_NATURAL); setNativeMode(false); setNativeMode(false); Loading @@ -233,6 +233,7 @@ public class DisplayTransformManager { applySaturation(COLOR_SATURATION_NATURAL); applySaturation(COLOR_SATURATION_NATURAL); setNativeMode(true); setNativeMode(true); } } setColorMatrix(LEVEL_COLOR_MATRIX_NIGHT_DISPLAY, nightDisplayMatrix); updateConfiguration(); updateConfiguration(); Loading Loading
services/core/java/com/android/server/display/ColorDisplayService.java +15 −8 Original line number Original line Diff line number Diff line Loading @@ -189,7 +189,7 @@ public final class ColorDisplayService extends SystemService mController = new ColorDisplayController(getContext(), mCurrentUser); mController = new ColorDisplayController(getContext(), mCurrentUser); mController.setListener(this); mController.setListener(this); setCoefficientMatrix(getContext()); setCoefficientMatrix(getContext(), DisplayTransformManager.isNativeModeEnabled()); // Prepare color transformation matrix. // Prepare color transformation matrix. setMatrix(mController.getColorTemperature(), mMatrixNight); setMatrix(mController.getColorTemperature(), mMatrixNight); Loading Loading @@ -287,17 +287,24 @@ public final class ColorDisplayService extends SystemService } } @Override @Override public void onDisplayColorModeChanged(int colorMode) { public void onDisplayColorModeChanged(int mode) { final DisplayTransformManager dtm = getLocalService(DisplayTransformManager.class); // Cancel the night display tint animator if it's running. dtm.setColorMode(colorMode); if (mColorMatrixAnimator != null) { mColorMatrixAnimator.cancel(); } setCoefficientMatrix(getContext()); setCoefficientMatrix(getContext(), mode == ColorDisplayController.COLOR_MODE_SATURATED); setMatrix(mController.getColorTemperature(), mMatrixNight); 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 final String[] coefficients = context.getResources().getStringArray(isNative ? R.array.config_nightDisplayColorTemperatureCoefficientsNative ? R.array.config_nightDisplayColorTemperatureCoefficientsNative : R.array.config_nightDisplayColorTemperatureCoefficients); : R.array.config_nightDisplayColorTemperatureCoefficients); Loading
services/core/java/com/android/server/display/DisplayTransformManager.java +2 −1 Original line number Original line Diff line number Diff line Loading @@ -222,7 +222,7 @@ public class DisplayTransformManager { return SystemProperties.getBoolean(PERSISTENT_PROPERTY_NATIVE_MODE, false); 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) { if (colorMode == ColorDisplayController.COLOR_MODE_NATURAL) { applySaturation(COLOR_SATURATION_NATURAL); applySaturation(COLOR_SATURATION_NATURAL); setNativeMode(false); setNativeMode(false); Loading @@ -233,6 +233,7 @@ public class DisplayTransformManager { applySaturation(COLOR_SATURATION_NATURAL); applySaturation(COLOR_SATURATION_NATURAL); setNativeMode(true); setNativeMode(true); } } setColorMatrix(LEVEL_COLOR_MATRIX_NIGHT_DISPLAY, nightDisplayMatrix); updateConfiguration(); updateConfiguration(); Loading