Remove precision loss on brightness slider.
Replacing this check with an equivalent float one allows all backlight values to be used. Previously, each slider change was being ignored if the int values were equivalent. Int values have a range of 1 to 255, however, the hardware can have more precision than this, so its more precise to do the comparison using floats, not ints. Bug: 157454239 Test: Manual, `ROBOTEST_FILTER=BrightnessLevelPreferenceControllerTest m -j RunSettingsRoboTests`, `cat /sys/class/backlight/panel0-backlight/brightness`. Change-Id: I15eab92b465652fc0024ed92045cc731492d88ba
This commit is contained in:
@@ -443,14 +443,10 @@ public class BrightnessController implements ToggleSlider.Listener {
|
||||
max = mMaximumBacklight;
|
||||
}
|
||||
// convertGammaToLinearFloat returns 0-1
|
||||
if (BrightnessSynchronizer.brightnessFloatToInt(mContext, brightnessValue)
|
||||
== BrightnessSynchronizer.brightnessFloatToInt(mContext,
|
||||
if (BrightnessSynchronizer.floatEquals(brightnessValue,
|
||||
convertGammaToLinearFloat(mControl.getValue(), min, max))) {
|
||||
// If we have more resolution on the slider than we do in the actual setting, then
|
||||
// multiple slider positions will map to the same setting value. Thus, if we see a
|
||||
// setting value here that maps to the current slider position, we don't bother to
|
||||
// calculate the new slider position since it may differ and look like a brightness
|
||||
// change to the user even though it isn't one.
|
||||
// If the value in the slider is equal to the value on the current brightness
|
||||
// then the slider does not need to animate, since the brightness will not change.
|
||||
return;
|
||||
}
|
||||
// Returns GAMMA_SPACE_MIN - GAMMA_SPACE_MAX
|
||||
|
||||
Reference in New Issue
Block a user