Merge "Make DWB light mode availability configurable" into tm-qpr-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
463df2a251
@@ -935,6 +935,8 @@
|
|||||||
<!-- Nominal White Z --> <item>1.089058</item>
|
<!-- Nominal White Z --> <item>1.089058</item>
|
||||||
</string-array>
|
</string-array>
|
||||||
|
|
||||||
|
<!-- Boolean indicating whether light mode is allowed when DWB is turned on. -->
|
||||||
|
<bool name="config_displayWhiteBalanceLightModeAllowed">true</bool>
|
||||||
|
|
||||||
<!-- Indicate available ColorDisplayManager.COLOR_MODE_xxx. -->
|
<!-- Indicate available ColorDisplayManager.COLOR_MODE_xxx. -->
|
||||||
<integer-array name="config_availableColorModes">
|
<integer-array name="config_availableColorModes">
|
||||||
|
|||||||
@@ -3418,6 +3418,7 @@
|
|||||||
<java-symbol type="integer" name="config_displayWhiteBalanceColorTemperatureDefault" />
|
<java-symbol type="integer" name="config_displayWhiteBalanceColorTemperatureDefault" />
|
||||||
<java-symbol type="array" name="config_displayWhiteBalanceDisplayPrimaries" />
|
<java-symbol type="array" name="config_displayWhiteBalanceDisplayPrimaries" />
|
||||||
<java-symbol type="array" name="config_displayWhiteBalanceDisplayNominalWhite" />
|
<java-symbol type="array" name="config_displayWhiteBalanceDisplayNominalWhite" />
|
||||||
|
<java-symbol type="bool" name="config_displayWhiteBalanceLightModeAllowed" />
|
||||||
|
|
||||||
<!-- Default first user restrictions -->
|
<!-- Default first user restrictions -->
|
||||||
<java-symbol type="array" name="config_defaultFirstUserRestrictions" />
|
<java-symbol type="array" name="config_defaultFirstUserRestrictions" />
|
||||||
|
|||||||
@@ -740,7 +740,8 @@ public final class ColorDisplayService extends SystemService {
|
|||||||
mDisplayWhiteBalanceTintController.setActivated(isDisplayWhiteBalanceSettingEnabled()
|
mDisplayWhiteBalanceTintController.setActivated(isDisplayWhiteBalanceSettingEnabled()
|
||||||
&& !mNightDisplayTintController.isActivated()
|
&& !mNightDisplayTintController.isActivated()
|
||||||
&& !isAccessibilityEnabled()
|
&& !isAccessibilityEnabled()
|
||||||
&& dtm.needsLinearColorMatrix());
|
&& dtm.needsLinearColorMatrix()
|
||||||
|
&& mDisplayWhiteBalanceTintController.isAllowed());
|
||||||
boolean activated = mDisplayWhiteBalanceTintController.isActivated();
|
boolean activated = mDisplayWhiteBalanceTintController.isActivated();
|
||||||
|
|
||||||
if (mDisplayWhiteBalanceListener != null && oldActivated != activated) {
|
if (mDisplayWhiteBalanceListener != null && oldActivated != activated) {
|
||||||
@@ -1453,6 +1454,12 @@ public final class ColorDisplayService extends SystemService {
|
|||||||
*/
|
*/
|
||||||
public class ColorDisplayServiceInternal {
|
public class ColorDisplayServiceInternal {
|
||||||
|
|
||||||
|
/** Sets whether DWB should be allowed in the current state. */
|
||||||
|
public void setDisplayWhiteBalanceAllowed(boolean allowed) {
|
||||||
|
mDisplayWhiteBalanceTintController.setAllowed(allowed);
|
||||||
|
updateDisplayWhiteBalanceStatus();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the current CCT value for the display white balance transform, and if the transform
|
* Set the current CCT value for the display white balance transform, and if the transform
|
||||||
* is enabled, apply it.
|
* is enabled, apply it.
|
||||||
|
|||||||
@@ -61,12 +61,17 @@ final class DisplayWhiteBalanceTintController extends TintController {
|
|||||||
boolean mSetUp = false;
|
boolean mSetUp = false;
|
||||||
private float[] mMatrixDisplayWhiteBalance = new float[16];
|
private float[] mMatrixDisplayWhiteBalance = new float[16];
|
||||||
private Boolean mIsAvailable;
|
private Boolean mIsAvailable;
|
||||||
|
// This feature becomes disallowed if the device is in an unsupported strong/light state.
|
||||||
|
private boolean mIsAllowed = true;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setUp(Context context, boolean needsLinear) {
|
public void setUp(Context context, boolean needsLinear) {
|
||||||
mSetUp = false;
|
mSetUp = false;
|
||||||
final Resources res = context.getResources();
|
final Resources res = context.getResources();
|
||||||
|
|
||||||
|
// Initialize with the config value for light mode, so it starts in the right state.
|
||||||
|
setAllowed(res.getBoolean(R.bool.config_displayWhiteBalanceLightModeAllowed));
|
||||||
|
|
||||||
ColorSpace.Rgb displayColorSpaceRGB = getDisplayColorSpaceFromSurfaceControl();
|
ColorSpace.Rgb displayColorSpaceRGB = getDisplayColorSpaceFromSurfaceControl();
|
||||||
if (displayColorSpaceRGB == null) {
|
if (displayColorSpaceRGB == null) {
|
||||||
Slog.w(ColorDisplayService.TAG,
|
Slog.w(ColorDisplayService.TAG,
|
||||||
@@ -248,6 +253,7 @@ final class DisplayWhiteBalanceTintController extends TintController {
|
|||||||
+ matrixToString(mDisplayColorSpaceRGB.getInverseTransform(), 3));
|
+ matrixToString(mDisplayColorSpaceRGB.getInverseTransform(), 3));
|
||||||
pw.println(" mMatrixDisplayWhiteBalance = "
|
pw.println(" mMatrixDisplayWhiteBalance = "
|
||||||
+ matrixToString(mMatrixDisplayWhiteBalance, 4));
|
+ matrixToString(mMatrixDisplayWhiteBalance, 4));
|
||||||
|
pw.println(" mIsAllowed = " + mIsAllowed);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -263,6 +269,14 @@ final class DisplayWhiteBalanceTintController extends TintController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setAllowed(boolean allowed) {
|
||||||
|
mIsAllowed = allowed;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isAllowed() {
|
||||||
|
return mIsAllowed;
|
||||||
|
}
|
||||||
|
|
||||||
private ColorSpace.Rgb makeRgbColorSpaceFromXYZ(float[] redGreenBlueXYZ, float[] whiteXYZ) {
|
private ColorSpace.Rgb makeRgbColorSpaceFromXYZ(float[] redGreenBlueXYZ, float[] whiteXYZ) {
|
||||||
return new ColorSpace.Rgb(
|
return new ColorSpace.Rgb(
|
||||||
"Display Color Space",
|
"Display Color Space",
|
||||||
|
|||||||
@@ -65,6 +65,8 @@ public class DisplayWhiteBalanceController implements
|
|||||||
// this effect.
|
// this effect.
|
||||||
private final float mHighLightAmbientColorTemperature;
|
private final float mHighLightAmbientColorTemperature;
|
||||||
|
|
||||||
|
private final boolean mLightModeAllowed;
|
||||||
|
|
||||||
private float mAmbientColorTemperature;
|
private float mAmbientColorTemperature;
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
float mPendingAmbientColorTemperature;
|
float mPendingAmbientColorTemperature;
|
||||||
@@ -148,6 +150,8 @@ public class DisplayWhiteBalanceController implements
|
|||||||
* @param displayColorTemperatures
|
* @param displayColorTemperatures
|
||||||
* The display color temperatures used to map the ambient color temperature to the display
|
* The display color temperatures used to map the ambient color temperature to the display
|
||||||
* color temperature (or null if no mapping is necessary).
|
* color temperature (or null if no mapping is necessary).
|
||||||
|
* @param lightModeAllowed
|
||||||
|
* Whether a lighter version should be applied when Strong Mode is not enabled.
|
||||||
*
|
*
|
||||||
* @throws NullPointerException
|
* @throws NullPointerException
|
||||||
* - brightnessSensor is null;
|
* - brightnessSensor is null;
|
||||||
@@ -171,7 +175,8 @@ public class DisplayWhiteBalanceController implements
|
|||||||
float[] ambientColorTemperatures,
|
float[] ambientColorTemperatures,
|
||||||
float[] displayColorTemperatures,
|
float[] displayColorTemperatures,
|
||||||
float[] strongAmbientColorTemperatures,
|
float[] strongAmbientColorTemperatures,
|
||||||
float[] strongDisplayColorTemperatures) {
|
float[] strongDisplayColorTemperatures,
|
||||||
|
boolean lightModeAllowed) {
|
||||||
validateArguments(brightnessSensor, brightnessFilter, colorTemperatureSensor,
|
validateArguments(brightnessSensor, brightnessFilter, colorTemperatureSensor,
|
||||||
colorTemperatureFilter, throttler);
|
colorTemperatureFilter, throttler);
|
||||||
mBrightnessSensor = brightnessSensor;
|
mBrightnessSensor = brightnessSensor;
|
||||||
@@ -186,6 +191,7 @@ public class DisplayWhiteBalanceController implements
|
|||||||
mLastAmbientColorTemperature = -1.0f;
|
mLastAmbientColorTemperature = -1.0f;
|
||||||
mAmbientColorTemperatureHistory = new History(/* size= */ 50);
|
mAmbientColorTemperatureHistory = new History(/* size= */ 50);
|
||||||
mAmbientColorTemperatureOverride = -1.0f;
|
mAmbientColorTemperatureOverride = -1.0f;
|
||||||
|
mLightModeAllowed = lightModeAllowed;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
mLowLightAmbientBrightnessToBiasSpline = new Spline.LinearSpline(
|
mLowLightAmbientBrightnessToBiasSpline = new Spline.LinearSpline(
|
||||||
@@ -273,6 +279,8 @@ public class DisplayWhiteBalanceController implements
|
|||||||
*/
|
*/
|
||||||
public void setStrongModeEnabled(boolean enabled) {
|
public void setStrongModeEnabled(boolean enabled) {
|
||||||
mStrongModeEnabled = enabled;
|
mStrongModeEnabled = enabled;
|
||||||
|
mColorDisplayServiceInternal.setDisplayWhiteBalanceAllowed(mLightModeAllowed
|
||||||
|
|| mStrongModeEnabled);
|
||||||
if (mEnabled) {
|
if (mEnabled) {
|
||||||
updateAmbientColorTemperature();
|
updateAmbientColorTemperature();
|
||||||
updateDisplayColorTemperature();
|
updateDisplayColorTemperature();
|
||||||
|
|||||||
@@ -95,6 +95,8 @@ public class DisplayWhiteBalanceFactory {
|
|||||||
final float[] strongDisplayColorTemperatures = getFloatArray(resources,
|
final float[] strongDisplayColorTemperatures = getFloatArray(resources,
|
||||||
com.android.internal.R.array
|
com.android.internal.R.array
|
||||||
.config_displayWhiteBalanceStrongDisplayColorTemperatures);
|
.config_displayWhiteBalanceStrongDisplayColorTemperatures);
|
||||||
|
final boolean lightModeAllowed = resources.getBoolean(
|
||||||
|
com.android.internal.R.bool.config_displayWhiteBalanceLightModeAllowed);
|
||||||
final DisplayWhiteBalanceController controller = new DisplayWhiteBalanceController(
|
final DisplayWhiteBalanceController controller = new DisplayWhiteBalanceController(
|
||||||
brightnessSensor, brightnessFilter, colorTemperatureSensor, colorTemperatureFilter,
|
brightnessSensor, brightnessFilter, colorTemperatureSensor, colorTemperatureFilter,
|
||||||
throttler, displayWhiteBalanceLowLightAmbientBrightnesses,
|
throttler, displayWhiteBalanceLowLightAmbientBrightnesses,
|
||||||
@@ -102,7 +104,7 @@ public class DisplayWhiteBalanceFactory {
|
|||||||
displayWhiteBalanceHighLightAmbientBrightnesses,
|
displayWhiteBalanceHighLightAmbientBrightnesses,
|
||||||
displayWhiteBalanceHighLightAmbientBiases, highLightAmbientColorTemperature,
|
displayWhiteBalanceHighLightAmbientBiases, highLightAmbientColorTemperature,
|
||||||
ambientColorTemperatures, displayColorTemperatures, strongAmbientColorTemperatures,
|
ambientColorTemperatures, displayColorTemperatures, strongAmbientColorTemperatures,
|
||||||
strongDisplayColorTemperatures);
|
strongDisplayColorTemperatures, lightModeAllowed);
|
||||||
brightnessSensor.setCallbacks(controller);
|
brightnessSensor.setCallbacks(controller);
|
||||||
colorTemperatureSensor.setCallbacks(controller);
|
colorTemperatureSensor.setCallbacks(controller);
|
||||||
return controller;
|
return controller;
|
||||||
|
|||||||
Reference in New Issue
Block a user