diff --git a/services/core/java/com/android/server/display/color/ColorDisplayService.java b/services/core/java/com/android/server/display/color/ColorDisplayService.java index 64a9e0074cb1e0a8784b0ec8c5bc861b3b4b1c58..fe75a81ee8054c09992e8f052e536afdfcf8f223 100644 --- a/services/core/java/com/android/server/display/color/ColorDisplayService.java +++ b/services/core/java/com/android/server/display/color/ColorDisplayService.java @@ -465,12 +465,16 @@ public final class ColorDisplayService extends SystemService { .setMatrix(mNightDisplayTintController.getColorTemperatureSetting()); } + // dtm.setColorMode() needs to be called before + // updateDisplayWhiteBalanceStatus(), this is because the latter calls + // DisplayTransformManager.needsLinearColorMatrix(), therefore it is dependent + // on the state of DisplayTransformManager. + final DisplayTransformManager dtm = getLocalService(DisplayTransformManager.class); + dtm.setColorMode(mode, mNightDisplayTintController.getMatrix()); + if (mDisplayWhiteBalanceTintController.isAvailable(getContext())) { updateDisplayWhiteBalanceStatus(); } - - final DisplayTransformManager dtm = getLocalService(DisplayTransformManager.class); - dtm.setColorMode(mode, mNightDisplayTintController.getMatrix()); } private void onAccessibilityActivated() {