Merge "Invoke BrightnessSetting callbacks even with identical brightness." into tm-dev

This commit is contained in:
Michael Wright
2022-06-01 02:41:25 +00:00
committed by Android (Google) Code Review
3 changed files with 18 additions and 15 deletions

View File

@@ -102,13 +102,15 @@ public class BrightnessSetting {
return;
}
synchronized (mSyncRoot) {
if (brightness == mBrightness) {
return;
// If the brightness is the same, we still need to update any listeners as the act of
// setting the brightness alone has side effects, like clearing any temporary
// brightness. We can skip persisting to disk, however, since it hasn't actually
// changed.
if (brightness != mBrightness) {
mPersistentDataStore.setBrightness(mLogicalDisplay.getPrimaryDisplayDeviceLocked(),
brightness);
}
mBrightness = brightness;
mPersistentDataStore.setBrightness(mLogicalDisplay.getPrimaryDisplayDeviceLocked(),
brightness);
int toSend = Float.floatToIntBits(mBrightness);
Message msg = mHandler.obtainMessage(MSG_BRIGHTNESS_CHANGED, toSend, 0);
mHandler.sendMessage(msg);

View File

@@ -3349,7 +3349,7 @@ public final class DisplayManagerService extends SystemService {
synchronized (mSyncRoot) {
DisplayPowerController dpc = mDisplayPowerControllers.get(displayId);
if (dpc != null) {
dpc.putScreenBrightnessSetting(brightness);
dpc.setBrightness(brightness);
}
mPersistentDataStore.saveIfNeeded();
}

View File

@@ -1345,7 +1345,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
if (mAppliedAutoBrightness && !autoBrightnessAdjustmentChanged) {
slowChange = true; // slowly adapt to auto-brightness
}
updateScreenBrightnessSetting = true;
updateScreenBrightnessSetting = mCurrentScreenBrightnessSetting != brightnessState;
mAppliedAutoBrightness = true;
mBrightnessReasonTemp.setReason(BrightnessReason.REASON_AUTOMATIC);
} else {
@@ -1415,7 +1415,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
// before applying the low power or dim transformations so that the slider
// accurately represents the full possible range, even if they range changes what
// it means in absolute terms.
putScreenBrightnessSetting(brightnessState, /* updateCurrent */ true);
updateScreenBrightnessSetting(brightnessState);
}
// Apply dimming by at least some minimum amount when user activity
@@ -2288,17 +2288,18 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
return clampScreenBrightnessForVr(brightnessFloat);
}
void putScreenBrightnessSetting(float brightnessValue) {
putScreenBrightnessSetting(brightnessValue, false);
void setBrightness(float brightnessValue) {
// Update the setting, which will eventually call back into DPC to have us actually update
// the display with the new value.
mBrightnessSetting.setBrightness(brightnessValue);
}
private void putScreenBrightnessSetting(float brightnessValue, boolean updateCurrent) {
if (!isValidBrightnessValue(brightnessValue)) {
private void updateScreenBrightnessSetting(float brightnessValue) {
if (!isValidBrightnessValue(brightnessValue)
|| brightnessValue == mCurrentScreenBrightnessSetting) {
return;
}
if (updateCurrent) {
setCurrentScreenBrightness(brightnessValue);
}
setCurrentScreenBrightness(brightnessValue);
mBrightnessSetting.setBrightness(brightnessValue);
}