Merge "Remove gap applying night display and color mode"

This commit is contained in:
TreeHugger Robot
2017-12-14 00:17:15 +00:00
committed by Android (Google) Code Review
2 changed files with 17 additions and 9 deletions

View File

@@ -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);

View File

@@ -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();