diff options
| author | 2022-08-22 08:20:17 +0000 | |
|---|---|---|
| committer | 2022-08-22 08:20:17 +0000 | |
| commit | 9eeb71008b35fb0cd324e407e5816727aa3c273c (patch) | |
| tree | a201ca75124e4c45d2b94486b46dd70ccd3d5a45 | |
| parent | 31c2991950682e5e446d7200a54dab2682e34f01 (diff) | |
| parent | 9f05ad0a60b486943ca919dfa5c4acd9441b1840 (diff) | |
Merge "Correct Brightness event values."
3 files changed, 55 insertions, 18 deletions
diff --git a/services/core/java/com/android/server/display/DisplayPowerController.java b/services/core/java/com/android/server/display/DisplayPowerController.java index 8807e1970061..2cbdad751b59 100644 --- a/services/core/java/com/android/server/display/DisplayPowerController.java +++ b/services/core/java/com/android/server/display/DisplayPowerController.java @@ -1645,11 +1645,11 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call mTempBrightnessEvent.setHbmMax(mHbmController.getCurrentBrightnessMax()); mTempBrightnessEvent.setHbmMode(mHbmController.getHighBrightnessMode()); mTempBrightnessEvent.setFlags(mTempBrightnessEvent.getFlags() - | (mIsRbcActive ? BrightnessEvent.FLAG_RBC : 0)); - mTempBrightnessEvent.setRbcStrength((mCdsi != null && mCdsi.isReduceBrightColorsActivated()) + | (mIsRbcActive ? BrightnessEvent.FLAG_RBC : 0) + | (mPowerRequest.lowPowerMode ? BrightnessEvent.FLAG_LOW_POWER_MODE : 0)); + mTempBrightnessEvent.setRbcStrength(mCdsi != null ? mCdsi.getReduceBrightColorsStrength() : -1); - mTempBrightnessEvent.setPowerFactor( - mPowerRequest.lowPowerMode ? mPowerRequest.screenLowPowerBrightnessFactor : 1.0f); + mTempBrightnessEvent.setPowerFactor(mPowerRequest.screenLowPowerBrightnessFactor); // Temporary is what we use during slider interactions. We avoid logging those so that // we don't spam logcat when the slider is being used. boolean tempToTempTransition = @@ -1662,10 +1662,10 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call mTempBrightnessEvent.setInitialBrightness(lastBrightness); mTempBrightnessEvent.setFastAmbientLux( mAutomaticBrightnessController == null - ? -1 : mAutomaticBrightnessController.getFastAmbientLux()); + ? -1f : mAutomaticBrightnessController.getFastAmbientLux()); mTempBrightnessEvent.setSlowAmbientLux( mAutomaticBrightnessController == null - ? -1 : mAutomaticBrightnessController.getSlowAmbientLux()); + ? -1f : mAutomaticBrightnessController.getSlowAmbientLux()); mTempBrightnessEvent.setAutomaticBrightnessEnabled(mPowerRequest.useAutoBrightness); mLastBrightnessEvent.copyFrom(mTempBrightnessEvent); BrightnessEvent newEvent = new BrightnessEvent(mTempBrightnessEvent); @@ -2769,12 +2769,13 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call } private void logManualBrightnessEvent(BrightnessEvent event) { - float hbmMaxNits = + float appliedLowPowerMode = event.isLowPowerModeSet() ? event.getPowerFactor() : -1f; + int appliedRbcStrength = event.isRbcEnabled() ? event.getRbcStrength() : -1; + float appliedHbmMaxNits = event.getHbmMode() == BrightnessInfo.HIGH_BRIGHTNESS_MODE_OFF ? -1f : convertToNits(event.getHbmMax()); - // thermalCapNits set to -1 if not currently capping max brightness - float thermalCapNits = + float appliedThermalCapNits = event.getThermalMax() == PowerManager.BRIGHTNESS_MAX ? -1f : convertToNits(event.getThermalMax()); @@ -2784,10 +2785,10 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call event.getSlowAmbientLux(), event.getPhysicalDisplayId(), event.isShortTermModelActive(), - event.getPowerFactor(), - event.getRbcStrength(), - hbmMaxNits, - thermalCapNits, + appliedLowPowerMode, + appliedRbcStrength, + appliedHbmMaxNits, + appliedThermalCapNits, event.isAutomaticBrightnessEnabled(), FrameworkStatsLog.DISPLAY_BRIGHTNESS_CHANGED__REASON__REASON_MANUAL); } diff --git a/services/core/java/com/android/server/display/brightness/BrightnessEvent.java b/services/core/java/com/android/server/display/brightness/BrightnessEvent.java index 70415a3c81c9..e3fa6220edf4 100644 --- a/services/core/java/com/android/server/display/brightness/BrightnessEvent.java +++ b/services/core/java/com/android/server/display/brightness/BrightnessEvent.java @@ -21,6 +21,8 @@ import android.os.PowerManager; import android.os.SystemClock; import android.util.TimeUtils; +import com.android.internal.annotations.VisibleForTesting; + /** * Represents a particular brightness change event. */ @@ -29,7 +31,8 @@ public final class BrightnessEvent { public static final int FLAG_INVALID_LUX = 0x2; public static final int FLAG_DOZE_SCALE = 0x4; public static final int FLAG_USER_SET = 0x8; - public static final int FLAG_IDLE_CURVE = 0x16; + public static final int FLAG_IDLE_CURVE = 0x10; + public static final int FLAG_LOW_POWER_MODE = 0x20; private BrightnessReason mReason = new BrightnessReason(); private int mDisplayId; @@ -317,6 +320,10 @@ public final class BrightnessEvent { this.mRbcStrength = mRbcStrength; } + public boolean isRbcEnabled() { + return (mFlags & FLAG_RBC) != 0; + } + public float getThermalMax() { return mThermalMax; } @@ -333,6 +340,10 @@ public final class BrightnessEvent { this.mPowerFactor = mPowerFactor; } + public boolean isLowPowerModeSet() { + return (mFlags & FLAG_LOW_POWER_MODE) != 0; + } + public int getFlags() { return mFlags; } @@ -361,11 +372,17 @@ public final class BrightnessEvent { this.mAutomaticBrightnessEnabled = mAutomaticBrightnessEnabled; } - private String flagsToString() { + /** + * A utility to stringify flags from a BrightnessEvent + * @return Stringified flags from BrightnessEvent + */ + @VisibleForTesting + public String flagsToString() { return ((mFlags & FLAG_USER_SET) != 0 ? "user_set " : "") + ((mFlags & FLAG_RBC) != 0 ? "rbc " : "") + ((mFlags & FLAG_INVALID_LUX) != 0 ? "invalid_lux " : "") + ((mFlags & FLAG_DOZE_SCALE) != 0 ? "doze_scale " : "") - + ((mFlags & FLAG_IDLE_CURVE) != 0 ? "idle_curve " : ""); + + ((mFlags & FLAG_IDLE_CURVE) != 0 ? "idle_curve " : "") + + ((mFlags & FLAG_LOW_POWER_MODE) != 0 ? "low_power_mode " : ""); } } diff --git a/services/tests/servicestests/src/com/android/server/display/brightness/BrightnessEventTest.java b/services/tests/servicestests/src/com/android/server/display/brightness/BrightnessEventTest.java index c4435b77628a..f69c5c2df6ce 100644 --- a/services/tests/servicestests/src/com/android/server/display/brightness/BrightnessEventTest.java +++ b/services/tests/servicestests/src/com/android/server/display/brightness/BrightnessEventTest.java @@ -63,7 +63,7 @@ public final class BrightnessEventTest { BrightnessEvent secondBrightnessEvent = new BrightnessEvent(1); secondBrightnessEvent.copyFrom(mBrightnessEvent); secondBrightnessEvent.setTime(0); - assertEquals(secondBrightnessEvent.equalsMainData(mBrightnessEvent), true); + assertEquals(true, secondBrightnessEvent.equalsMainData(mBrightnessEvent)); } @Test @@ -74,9 +74,28 @@ public final class BrightnessEventTest { + " preBrt=NaN, lux=100.0, fastLux=90.0, slowLux=85.0, preLux=150.0, hbmMax=0.62," + " hbmMode=off, rbcStrength=-1, thrmMax=0.65, powerFactor=0.2, flags=, reason=doze" + " [ low_pwr ], autoBrightness=true"; - assertEquals(actualString, expectedString); + assertEquals(expectedString, actualString); } + @Test + public void testFlagsToString() { + mBrightnessEvent.reset(); + mBrightnessEvent.setFlags(mBrightnessEvent.getFlags() | BrightnessEvent.FLAG_IDLE_CURVE); + String actualString = mBrightnessEvent.flagsToString(); + String expectedString = "idle_curve "; + assertEquals(expectedString, actualString); + } + + @Test + public void testFlagsToString_multipleFlags() { + mBrightnessEvent.reset(); + mBrightnessEvent.setFlags(mBrightnessEvent.getFlags() + | BrightnessEvent.FLAG_IDLE_CURVE + | BrightnessEvent.FLAG_LOW_POWER_MODE); + String actualString = mBrightnessEvent.flagsToString(); + String expectedString = "idle_curve low_power_mode "; + assertEquals(expectedString, actualString); + } private BrightnessReason getReason(int reason, int modifier) { |