Loading services/core/java/com/android/server/display/BrightnessMappingStrategy.java +19 −6 Original line number Diff line number Diff line Loading @@ -32,6 +32,7 @@ import com.android.internal.annotations.VisibleForTesting; import com.android.internal.display.BrightnessSynchronizer; import com.android.internal.util.Preconditions; import com.android.server.display.utils.Plog; import com.android.server.display.whitebalance.DisplayWhiteBalanceController; import java.io.PrintWriter; import java.util.Arrays; Loading Loading @@ -69,7 +70,7 @@ public abstract class BrightnessMappingStrategy { @Nullable public static BrightnessMappingStrategy create(Resources resources, DisplayDeviceConfig displayDeviceConfig) { return create(resources, displayDeviceConfig, /* isForIdleMode= */ false); return create(resources, displayDeviceConfig, /* isForIdleMode= */ false, null); } /** Loading @@ -80,8 +81,10 @@ public abstract class BrightnessMappingStrategy { */ @Nullable public static BrightnessMappingStrategy createForIdleMode(Resources resources, DisplayDeviceConfig displayDeviceConfig) { return create(resources, displayDeviceConfig, /* isForIdleMode= */ true); DisplayDeviceConfig displayDeviceConfig, DisplayWhiteBalanceController displayWhiteBalanceController) { return create(resources, displayDeviceConfig, /* isForIdleMode= */ true, displayWhiteBalanceController); } /** Loading @@ -96,7 +99,8 @@ public abstract class BrightnessMappingStrategy { */ @Nullable private static BrightnessMappingStrategy create(Resources resources, DisplayDeviceConfig displayDeviceConfig, boolean isForIdleMode) { DisplayDeviceConfig displayDeviceConfig, boolean isForIdleMode, DisplayWhiteBalanceController displayWhiteBalanceController) { // Display independent, mode dependent values float[] brightnessLevelsNits; Loading Loading @@ -135,7 +139,7 @@ public abstract class BrightnessMappingStrategy { builder.setShortTermModelLowerLuxMultiplier(SHORT_TERM_MODEL_THRESHOLD_RATIO); builder.setShortTermModelUpperLuxMultiplier(SHORT_TERM_MODEL_THRESHOLD_RATIO); return new PhysicalMappingStrategy(builder.build(), nitsRange, brightnessRange, autoBrightnessAdjustmentMaxGamma, isForIdleMode); autoBrightnessAdjustmentMaxGamma, isForIdleMode, displayWhiteBalanceController); } else if (isValidMapping(luxLevels, brightnessLevelsBacklight) && !isForIdleMode) { return new SimpleMappingStrategy(luxLevels, brightnessLevelsBacklight, autoBrightnessAdjustmentMaxGamma, shortTermModelTimeout); Loading Loading @@ -770,9 +774,11 @@ public abstract class BrightnessMappingStrategy { private float mUserLux; private float mUserBrightness; private final boolean mIsForIdleMode; private final DisplayWhiteBalanceController mDisplayWhiteBalanceController; public PhysicalMappingStrategy(BrightnessConfiguration config, float[] nits, float[] brightness, float maxGamma, boolean isForIdleMode) { float[] brightness, float maxGamma, boolean isForIdleMode, DisplayWhiteBalanceController displayWhiteBalanceController) { Preconditions.checkArgument(nits.length != 0 && brightness.length != 0, "Nits and brightness arrays must not be empty!"); Loading @@ -789,6 +795,7 @@ public abstract class BrightnessMappingStrategy { mAutoBrightnessAdjustment = 0; mUserLux = -1; mUserBrightness = -1; mDisplayWhiteBalanceController = displayWhiteBalanceController; mNits = nits; mBrightness = brightness; Loading Loading @@ -836,6 +843,12 @@ public abstract class BrightnessMappingStrategy { public float getBrightness(float lux, String packageName, @ApplicationInfo.Category int category) { float nits = mBrightnessSpline.interpolate(lux); // Adjust nits to compensate for display white balance colour strength. if (mDisplayWhiteBalanceController != null && isForIdleMode()) { nits = mDisplayWhiteBalanceController.calculateAdjustedBrightnessNits(nits); } float brightness = mNitsToBrightnessSpline.interpolate(nits); // Correct the brightness according to the current application and its category, but // only if no user data point is set (as this will override the user setting). Loading services/core/java/com/android/server/display/DisplayPowerController.java +1 −1 Original line number Diff line number Diff line Loading @@ -897,7 +897,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call mDisplayDeviceConfig); if (isIdleScreenBrightnessEnabled) { mIdleModeBrightnessMapper = BrightnessMappingStrategy.createForIdleMode(resources, mDisplayDeviceConfig); mDisplayDeviceConfig, mDisplayWhiteBalanceController); } if (mInteractiveModeBrightnessMapper != null) { Loading services/tests/servicestests/src/com/android/server/display/BrightnessMappingStrategyTest.java +2 −1 Original line number Diff line number Diff line Loading @@ -393,7 +393,8 @@ public class BrightnessMappingStrategyTest { // Create an idle mode bms // This will fail if it tries to fetch the wrong configuration. BrightnessMappingStrategy bms = BrightnessMappingStrategy.createForIdleMode(res, ddc); BrightnessMappingStrategy bms = BrightnessMappingStrategy.createForIdleMode(res, ddc, null); assertNotNull("BrightnessMappingStrategy should not be null", bms); // Ensure that the config is the one we set Loading Loading
services/core/java/com/android/server/display/BrightnessMappingStrategy.java +19 −6 Original line number Diff line number Diff line Loading @@ -32,6 +32,7 @@ import com.android.internal.annotations.VisibleForTesting; import com.android.internal.display.BrightnessSynchronizer; import com.android.internal.util.Preconditions; import com.android.server.display.utils.Plog; import com.android.server.display.whitebalance.DisplayWhiteBalanceController; import java.io.PrintWriter; import java.util.Arrays; Loading Loading @@ -69,7 +70,7 @@ public abstract class BrightnessMappingStrategy { @Nullable public static BrightnessMappingStrategy create(Resources resources, DisplayDeviceConfig displayDeviceConfig) { return create(resources, displayDeviceConfig, /* isForIdleMode= */ false); return create(resources, displayDeviceConfig, /* isForIdleMode= */ false, null); } /** Loading @@ -80,8 +81,10 @@ public abstract class BrightnessMappingStrategy { */ @Nullable public static BrightnessMappingStrategy createForIdleMode(Resources resources, DisplayDeviceConfig displayDeviceConfig) { return create(resources, displayDeviceConfig, /* isForIdleMode= */ true); DisplayDeviceConfig displayDeviceConfig, DisplayWhiteBalanceController displayWhiteBalanceController) { return create(resources, displayDeviceConfig, /* isForIdleMode= */ true, displayWhiteBalanceController); } /** Loading @@ -96,7 +99,8 @@ public abstract class BrightnessMappingStrategy { */ @Nullable private static BrightnessMappingStrategy create(Resources resources, DisplayDeviceConfig displayDeviceConfig, boolean isForIdleMode) { DisplayDeviceConfig displayDeviceConfig, boolean isForIdleMode, DisplayWhiteBalanceController displayWhiteBalanceController) { // Display independent, mode dependent values float[] brightnessLevelsNits; Loading Loading @@ -135,7 +139,7 @@ public abstract class BrightnessMappingStrategy { builder.setShortTermModelLowerLuxMultiplier(SHORT_TERM_MODEL_THRESHOLD_RATIO); builder.setShortTermModelUpperLuxMultiplier(SHORT_TERM_MODEL_THRESHOLD_RATIO); return new PhysicalMappingStrategy(builder.build(), nitsRange, brightnessRange, autoBrightnessAdjustmentMaxGamma, isForIdleMode); autoBrightnessAdjustmentMaxGamma, isForIdleMode, displayWhiteBalanceController); } else if (isValidMapping(luxLevels, brightnessLevelsBacklight) && !isForIdleMode) { return new SimpleMappingStrategy(luxLevels, brightnessLevelsBacklight, autoBrightnessAdjustmentMaxGamma, shortTermModelTimeout); Loading Loading @@ -770,9 +774,11 @@ public abstract class BrightnessMappingStrategy { private float mUserLux; private float mUserBrightness; private final boolean mIsForIdleMode; private final DisplayWhiteBalanceController mDisplayWhiteBalanceController; public PhysicalMappingStrategy(BrightnessConfiguration config, float[] nits, float[] brightness, float maxGamma, boolean isForIdleMode) { float[] brightness, float maxGamma, boolean isForIdleMode, DisplayWhiteBalanceController displayWhiteBalanceController) { Preconditions.checkArgument(nits.length != 0 && brightness.length != 0, "Nits and brightness arrays must not be empty!"); Loading @@ -789,6 +795,7 @@ public abstract class BrightnessMappingStrategy { mAutoBrightnessAdjustment = 0; mUserLux = -1; mUserBrightness = -1; mDisplayWhiteBalanceController = displayWhiteBalanceController; mNits = nits; mBrightness = brightness; Loading Loading @@ -836,6 +843,12 @@ public abstract class BrightnessMappingStrategy { public float getBrightness(float lux, String packageName, @ApplicationInfo.Category int category) { float nits = mBrightnessSpline.interpolate(lux); // Adjust nits to compensate for display white balance colour strength. if (mDisplayWhiteBalanceController != null && isForIdleMode()) { nits = mDisplayWhiteBalanceController.calculateAdjustedBrightnessNits(nits); } float brightness = mNitsToBrightnessSpline.interpolate(nits); // Correct the brightness according to the current application and its category, but // only if no user data point is set (as this will override the user setting). Loading
services/core/java/com/android/server/display/DisplayPowerController.java +1 −1 Original line number Diff line number Diff line Loading @@ -897,7 +897,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call mDisplayDeviceConfig); if (isIdleScreenBrightnessEnabled) { mIdleModeBrightnessMapper = BrightnessMappingStrategy.createForIdleMode(resources, mDisplayDeviceConfig); mDisplayDeviceConfig, mDisplayWhiteBalanceController); } if (mInteractiveModeBrightnessMapper != null) { Loading
services/tests/servicestests/src/com/android/server/display/BrightnessMappingStrategyTest.java +2 −1 Original line number Diff line number Diff line Loading @@ -393,7 +393,8 @@ public class BrightnessMappingStrategyTest { // Create an idle mode bms // This will fail if it tries to fetch the wrong configuration. BrightnessMappingStrategy bms = BrightnessMappingStrategy.createForIdleMode(res, ddc); BrightnessMappingStrategy bms = BrightnessMappingStrategy.createForIdleMode(res, ddc, null); assertNotNull("BrightnessMappingStrategy should not be null", bms); // Ensure that the config is the one we set Loading