Hide display white balance setting depending on color mode
Display white balance relies on a linear color transform matrix to work as intended. When the current color mode is COLOR_MODE_SATURATED, this condition is not guaranteed to be satisfied. In this case, hide the display white balance setting. Bug: 116516917 make ROBOTEST_FILTER=DisplayWhiteBalancePreferenceControllerTest RunSettingsRoboTests -j32 Change-Id: I1fe1eb907485766888832db8b9c342339cc80ea7
This commit is contained in:
@@ -17,9 +17,11 @@ import android.content.Context;
|
||||
import android.hardware.display.ColorDisplayManager;
|
||||
import android.os.UserHandle;
|
||||
import android.provider.Settings.Secure;
|
||||
import com.android.internal.app.ColorDisplayController;
|
||||
import com.android.settings.core.TogglePreferenceController;
|
||||
|
||||
public class DisplayWhiteBalancePreferenceController extends TogglePreferenceController {
|
||||
private ColorDisplayController mColorDisplayController;
|
||||
|
||||
public DisplayWhiteBalancePreferenceController(Context context, String key) {
|
||||
super(context, key);
|
||||
@@ -27,7 +29,11 @@ public class DisplayWhiteBalancePreferenceController extends TogglePreferenceCon
|
||||
|
||||
@Override
|
||||
public int getAvailabilityStatus() {
|
||||
return ColorDisplayManager.isDisplayWhiteBalanceAvailable(mContext) ?
|
||||
// Display white balance is only valid in linear light space. COLOR_MODE_SATURATED implies
|
||||
// unmanaged color mode, and hence unknown color processing conditions.
|
||||
return ColorDisplayManager.isDisplayWhiteBalanceAvailable(mContext) &&
|
||||
getColorDisplayController().getColorMode() !=
|
||||
ColorDisplayController.COLOR_MODE_SATURATED ?
|
||||
AVAILABLE : DISABLED_FOR_USER;
|
||||
}
|
||||
|
||||
@@ -43,4 +49,11 @@ public class DisplayWhiteBalancePreferenceController extends TogglePreferenceCon
|
||||
isChecked ? 1 : 0, UserHandle.USER_CURRENT);
|
||||
return true;
|
||||
}
|
||||
|
||||
ColorDisplayController getColorDisplayController() {
|
||||
if (mColorDisplayController == null) {
|
||||
mColorDisplayController = new ColorDisplayController(mContext);
|
||||
}
|
||||
return mColorDisplayController;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user