summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/hardware/display/DisplayManagerInternal.java7
-rw-r--r--services/core/java/com/android/server/display/AutomaticBrightnessController.java24
-rw-r--r--services/core/java/com/android/server/display/DisplayOffloadSessionImpl.java10
-rw-r--r--services/core/java/com/android/server/display/DisplayPowerController.java19
-rw-r--r--services/core/java/com/android/server/display/DisplayPowerController2.java21
-rw-r--r--services/core/java/com/android/server/display/DisplayPowerControllerInterface.java10
-rw-r--r--services/tests/displayservicetests/src/com/android/server/display/DisplayPowerController2Test.java6
-rw-r--r--services/tests/displayservicetests/src/com/android/server/display/DisplayPowerControllerTest.java2
8 files changed, 77 insertions, 22 deletions
diff --git a/core/java/android/hardware/display/DisplayManagerInternal.java b/core/java/android/hardware/display/DisplayManagerInternal.java
index ffd7212a7525..86024ea41363 100644
--- a/core/java/android/hardware/display/DisplayManagerInternal.java
+++ b/core/java/android/hardware/display/DisplayManagerInternal.java
@@ -751,6 +751,13 @@ public abstract class DisplayManagerInternal {
*/
boolean blockScreenOn(Runnable unblocker);
+ /** Get the current brightness levels used to determine automatic brightness based on lux
+ * levels. */
+ float[] getCurrentAutoBrightnessLevels();
+
+ /** Get the current lux levels used to determine automatic brightness. */
+ float[] getCurrentAutoBrightnessLuxLevels();
+
/** Returns whether displayoffload supports the given display state. */
static boolean isSupportedOffloadState(int displayState) {
return Display.isSuspendedState(displayState);
diff --git a/services/core/java/com/android/server/display/AutomaticBrightnessController.java b/services/core/java/com/android/server/display/AutomaticBrightnessController.java
index 3024dd27b5c4..2d6177d9d27b 100644
--- a/services/core/java/com/android/server/display/AutomaticBrightnessController.java
+++ b/services/core/java/com/android/server/display/AutomaticBrightnessController.java
@@ -403,7 +403,8 @@ public class AutomaticBrightnessController {
| (!mAmbientLuxValid ? BrightnessEvent.FLAG_INVALID_LUX : 0)
| (mDisplayPolicy == DisplayPowerRequest.POLICY_DOZE
? BrightnessEvent.FLAG_DOZE_SCALE : 0)
- | (isInIdleMode() ? BrightnessEvent.FLAG_IDLE_CURVE : 0));
+ | (getMode() == AUTO_BRIGHTNESS_MODE_IDLE
+ ? BrightnessEvent.FLAG_IDLE_CURVE : 0));
}
if (!mAmbientLuxValid) {
@@ -514,7 +515,8 @@ public class AutomaticBrightnessController {
if (mLoggingEnabled) {
Slog.d(TAG, "Display policy transitioning from " + oldPolicy + " to " + policy);
}
- if (!isInteractivePolicy(policy) && isInteractivePolicy(oldPolicy) && !isInIdleMode()) {
+ if (!isInteractivePolicy(policy) && isInteractivePolicy(oldPolicy)
+ && getMode() != AUTO_BRIGHTNESS_MODE_IDLE) {
mHandler.sendEmptyMessageDelayed(MSG_INVALIDATE_CURRENT_SHORT_TERM_MODEL,
mCurrentBrightnessMapper.getShortTermModelTimeout());
} else if (isInteractivePolicy(policy) && !isInteractivePolicy(oldPolicy)) {
@@ -555,7 +557,7 @@ public class AutomaticBrightnessController {
boolean shouldResetShortTermModel) {
if (mBrightnessMappingStrategyMap.get(AUTO_BRIGHTNESS_MODE_DEFAULT)
.setBrightnessConfiguration(configuration)) {
- if (!isInIdleMode() && shouldResetShortTermModel) {
+ if (getMode() != AUTO_BRIGHTNESS_MODE_IDLE && shouldResetShortTermModel) {
resetShortTermModel();
}
return true;
@@ -563,8 +565,9 @@ public class AutomaticBrightnessController {
return false;
}
- public boolean isInIdleMode() {
- return mCurrentBrightnessMapper.getMode() == AUTO_BRIGHTNESS_MODE_IDLE;
+ @AutomaticBrightnessController.AutomaticBrightnessMode
+ public int getMode() {
+ return mCurrentBrightnessMapper.getMode();
}
public void dump(PrintWriter pw) {
@@ -620,8 +623,7 @@ public class AutomaticBrightnessController {
pw.println(" mPendingForegroundAppPackageName=" + mPendingForegroundAppPackageName);
pw.println(" mForegroundAppCategory=" + mForegroundAppCategory);
pw.println(" mPendingForegroundAppCategory=" + mPendingForegroundAppCategory);
- pw.println(" Current mode="
- + autoBrightnessModeToString(mCurrentBrightnessMapper.getMode()));
+ pw.println(" Current mode=" + autoBrightnessModeToString(getMode()));
pw.println();
for (int i = 0; i < mBrightnessMappingStrategyMap.size(); i++) {
@@ -743,7 +745,7 @@ public class AutomaticBrightnessController {
lux = 0;
}
mAmbientLux = lux;
- if (isInIdleMode()) {
+ if (getMode() == AUTO_BRIGHTNESS_MODE_IDLE) {
mAmbientBrighteningThreshold =
mAmbientBrightnessThresholdsIdle.getBrighteningThreshold(lux);
mAmbientDarkeningThreshold =
@@ -835,7 +837,7 @@ public class AutomaticBrightnessController {
}
earliestValidTime = mAmbientLightRingBuffer.getTime(i);
}
- return earliestValidTime + (isInIdleMode()
+ return earliestValidTime + (getMode() == AUTO_BRIGHTNESS_MODE_IDLE
? mBrighteningLightDebounceConfigIdle : mBrighteningLightDebounceConfig);
}
@@ -848,7 +850,7 @@ public class AutomaticBrightnessController {
}
earliestValidTime = mAmbientLightRingBuffer.getTime(i);
}
- return earliestValidTime + (isInIdleMode()
+ return earliestValidTime + (getMode() == AUTO_BRIGHTNESS_MODE_IDLE
? mDarkeningLightDebounceConfigIdle : mDarkeningLightDebounceConfig);
}
@@ -973,7 +975,7 @@ public class AutomaticBrightnessController {
mPreThresholdBrightness = mScreenAutoBrightness;
}
mScreenAutoBrightness = newScreenAutoBrightness;
- if (isInIdleMode()) {
+ if (getMode() == AUTO_BRIGHTNESS_MODE_IDLE) {
mScreenBrighteningThreshold = clampScreenBrightness(
mScreenBrightnessThresholdsIdle.getBrighteningThreshold(
newScreenAutoBrightness));
diff --git a/services/core/java/com/android/server/display/DisplayOffloadSessionImpl.java b/services/core/java/com/android/server/display/DisplayOffloadSessionImpl.java
index 4e341a9c19b4..c17709144e1d 100644
--- a/services/core/java/com/android/server/display/DisplayOffloadSessionImpl.java
+++ b/services/core/java/com/android/server/display/DisplayOffloadSessionImpl.java
@@ -65,6 +65,16 @@ public class DisplayOffloadSessionImpl implements DisplayManagerInternal.Display
return true;
}
+ @Override
+ public float[] getCurrentAutoBrightnessLevels() {
+ return mDisplayPowerController.getCurrentAutoBrightnessLevels();
+ }
+
+ @Override
+ public float[] getCurrentAutoBrightnessLuxLevels() {
+ return mDisplayPowerController.getCurrentAutoBrightnessLuxLevels();
+ }
+
/**
* Start the offload session. The method returns if the session is already active.
* @return Whether the session was started successfully
diff --git a/services/core/java/com/android/server/display/DisplayPowerController.java b/services/core/java/com/android/server/display/DisplayPowerController.java
index 06e5f99a1946..c17378d790bd 100644
--- a/services/core/java/com/android/server/display/DisplayPowerController.java
+++ b/services/core/java/com/android/server/display/DisplayPowerController.java
@@ -1119,7 +1119,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
DisplayPowerState.SCREEN_BRIGHTNESS_FLOAT,
DisplayPowerState.SCREEN_SDR_BRIGHTNESS_FLOAT);
setAnimatorRampSpeeds(mAutomaticBrightnessController != null
- && mAutomaticBrightnessController.isInIdleMode());
+ && mAutomaticBrightnessController.getMode() == AUTO_BRIGHTNESS_MODE_IDLE);
mScreenBrightnessRampAnimator.setListener(mRampAnimatorListener);
noteScreenState(mPowerState.getScreenState());
@@ -1990,7 +1990,8 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
boolean isIncreasing = animateValue > currentBrightness;
final float rampSpeed;
final boolean idle = mAutomaticBrightnessController != null
- && mAutomaticBrightnessController.isInIdleMode();
+ && mAutomaticBrightnessController.getMode()
+ == AUTO_BRIGHTNESS_MODE_IDLE;
if (isIncreasing && slowChange) {
rampSpeed = idle ? mBrightnessRampRateSlowIncreaseIdle
: mBrightnessRampRateSlowIncrease;
@@ -2214,6 +2215,18 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
}
@Override
+ public float[] getCurrentAutoBrightnessLevels() {
+ // The old DPC is no longer supported
+ return new float[0];
+ }
+
+ @Override
+ public float[] getCurrentAutoBrightnessLuxLevels() {
+ // The old DPC is no longer supported
+ return new float[0];
+ }
+
+ @Override
public BrightnessInfo getBrightnessInfo() {
synchronized (mCachedBrightnessInfo) {
return new BrightnessInfo(
@@ -2898,7 +2911,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
// or the nits is invalid.
if (brightnessIsTemporary
|| mAutomaticBrightnessController == null
- || mAutomaticBrightnessController.isInIdleMode()
+ || mAutomaticBrightnessController.getMode() == AUTO_BRIGHTNESS_MODE_IDLE
|| !autobrightnessEnabled
|| mBrightnessTracker == null
|| !mUseAutoBrightness
diff --git a/services/core/java/com/android/server/display/DisplayPowerController2.java b/services/core/java/com/android/server/display/DisplayPowerController2.java
index 519224a5fcff..2efda087d4ac 100644
--- a/services/core/java/com/android/server/display/DisplayPowerController2.java
+++ b/services/core/java/com/android/server/display/DisplayPowerController2.java
@@ -951,7 +951,7 @@ final class DisplayPowerController2 implements AutomaticBrightnessController.Cal
DisplayPowerState.SCREEN_BRIGHTNESS_FLOAT,
DisplayPowerState.SCREEN_SDR_BRIGHTNESS_FLOAT);
setAnimatorRampSpeeds(mAutomaticBrightnessController != null
- && mAutomaticBrightnessController.isInIdleMode());
+ && mAutomaticBrightnessController.getMode() == AUTO_BRIGHTNESS_MODE_IDLE);
mScreenBrightnessRampAnimator.setListener(mRampAnimatorListener);
noteScreenState(mPowerState.getScreenState());
@@ -1365,7 +1365,7 @@ final class DisplayPowerController2 implements AutomaticBrightnessController.Cal
// Switch to doze auto-brightness mode if needed
if (mFlags.areAutoBrightnessModesEnabled() && mAutomaticBrightnessController != null
- && !mAutomaticBrightnessController.isInIdleMode()) {
+ && mAutomaticBrightnessController.getMode() != AUTO_BRIGHTNESS_MODE_IDLE) {
setAutomaticScreenBrightnessMode(Display.isDozeState(state)
? AUTO_BRIGHTNESS_MODE_DOZE : AUTO_BRIGHTNESS_MODE_DEFAULT);
}
@@ -1654,7 +1654,8 @@ final class DisplayPowerController2 implements AutomaticBrightnessController.Cal
boolean isIncreasing = animateValue > currentBrightness;
final float rampSpeed;
final boolean idle = mAutomaticBrightnessController != null
- && mAutomaticBrightnessController.isInIdleMode();
+ && mAutomaticBrightnessController.getMode()
+ == AUTO_BRIGHTNESS_MODE_IDLE;
if (isIncreasing && slowChange) {
rampSpeed = idle ? mBrightnessRampRateSlowIncreaseIdle
: mBrightnessRampRateSlowIncrease;
@@ -1886,6 +1887,18 @@ final class DisplayPowerController2 implements AutomaticBrightnessController.Cal
}
@Override
+ public float[] getCurrentAutoBrightnessLevels() {
+ return mDisplayDeviceConfig.getAutoBrightnessBrighteningLevels(
+ mAutomaticBrightnessController.getMode());
+ }
+
+ @Override
+ public float[] getCurrentAutoBrightnessLuxLevels() {
+ return mDisplayDeviceConfig.getAutoBrightnessBrighteningLevelsLux(
+ mAutomaticBrightnessController.getMode());
+ }
+
+ @Override
public BrightnessInfo getBrightnessInfo() {
synchronized (mCachedBrightnessInfo) {
return new BrightnessInfo(
@@ -2460,7 +2473,7 @@ final class DisplayPowerController2 implements AutomaticBrightnessController.Cal
// or the nits is invalid.
if (brightnessIsTemporary
|| mAutomaticBrightnessController == null
- || mAutomaticBrightnessController.isInIdleMode()
+ || mAutomaticBrightnessController.getMode() == AUTO_BRIGHTNESS_MODE_IDLE
|| !autobrightnessEnabled
|| mBrightnessTracker == null
|| !shouldUseAutoBrightness
diff --git a/services/core/java/com/android/server/display/DisplayPowerControllerInterface.java b/services/core/java/com/android/server/display/DisplayPowerControllerInterface.java
index c27918430254..5b350db5fa7b 100644
--- a/services/core/java/com/android/server/display/DisplayPowerControllerInterface.java
+++ b/services/core/java/com/android/server/display/DisplayPowerControllerInterface.java
@@ -237,4 +237,14 @@ public interface DisplayPowerControllerInterface {
* Indicate that boot has been completed and the screen is ready to update.
*/
void onBootCompleted();
+
+ /**
+ * Get the current brightness levels used to determine automatic brightness based on lux levels.
+ */
+ float[] getCurrentAutoBrightnessLevels();
+
+ /**
+ * Get the current lux levels used to determine automatic brightness.
+ */
+ float[] getCurrentAutoBrightnessLuxLevels();
}
diff --git a/services/tests/displayservicetests/src/com/android/server/display/DisplayPowerController2Test.java b/services/tests/displayservicetests/src/com/android/server/display/DisplayPowerController2Test.java
index 4cc68cf11e69..7a708487293e 100644
--- a/services/tests/displayservicetests/src/com/android/server/display/DisplayPowerController2Test.java
+++ b/services/tests/displayservicetests/src/com/android/server/display/DisplayPowerController2Test.java
@@ -775,7 +775,7 @@ public final class DisplayPowerController2Test {
final float hdrBrightness = 0.3f;
when(mHolder.displayPowerState.getScreenState()).thenReturn(Display.STATE_ON);
when(mHolder.displayPowerState.getColorFadeLevel()).thenReturn(1.0f);
- when(mHolder.automaticBrightnessController.isInIdleMode()).thenReturn(true);
+ when(mHolder.automaticBrightnessController.getMode()).thenReturn(AUTO_BRIGHTNESS_MODE_IDLE);
when(mHolder.automaticBrightnessController.getAutomaticScreenBrightness(
any(BrightnessEvent.class))).thenReturn(sdrBrightness);
when(mHolder.hdrClamper.getMaxBrightness()).thenReturn(1.0f);
@@ -1234,7 +1234,7 @@ public final class DisplayPowerController2Test {
float brightness = 0.6f;
when(mHolder.displayPowerState.getScreenState()).thenReturn(Display.STATE_ON);
when(mHolder.displayPowerState.getColorFadeLevel()).thenReturn(1.0f);
- when(mHolder.automaticBrightnessController.isInIdleMode()).thenReturn(true);
+ when(mHolder.automaticBrightnessController.getMode()).thenReturn(AUTO_BRIGHTNESS_MODE_IDLE);
when(mHolder.automaticBrightnessController.getAutomaticScreenBrightness(
any(BrightnessEvent.class))).thenReturn(brightness);
@@ -1597,7 +1597,7 @@ public final class DisplayPowerController2Test {
public void testDoesNotSwitchFromIdleToDozeAutoBrightnessMode() {
when(mDisplayManagerFlagsMock.areAutoBrightnessModesEnabled()).thenReturn(true);
when(mHolder.displayPowerState.getScreenState()).thenReturn(Display.STATE_DOZE);
- when(mHolder.automaticBrightnessController.isInIdleMode()).thenReturn(true);
+ when(mHolder.automaticBrightnessController.getMode()).thenReturn(AUTO_BRIGHTNESS_MODE_IDLE);
DisplayPowerRequest dpr = new DisplayPowerRequest();
mHolder.dpc.requestPowerState(dpr, /* waitForNegativeProximity= */ false);
diff --git a/services/tests/displayservicetests/src/com/android/server/display/DisplayPowerControllerTest.java b/services/tests/displayservicetests/src/com/android/server/display/DisplayPowerControllerTest.java
index 943862f918bc..d69c140716f3 100644
--- a/services/tests/displayservicetests/src/com/android/server/display/DisplayPowerControllerTest.java
+++ b/services/tests/displayservicetests/src/com/android/server/display/DisplayPowerControllerTest.java
@@ -1164,7 +1164,7 @@ public final class DisplayPowerControllerTest {
float brightness = 0.6f;
when(mHolder.displayPowerState.getScreenState()).thenReturn(Display.STATE_ON);
when(mHolder.displayPowerState.getColorFadeLevel()).thenReturn(1.0f);
- when(mHolder.automaticBrightnessController.isInIdleMode()).thenReturn(true);
+ when(mHolder.automaticBrightnessController.getMode()).thenReturn(AUTO_BRIGHTNESS_MODE_IDLE);
when(mHolder.automaticBrightnessController.getAutomaticScreenBrightness(
any(BrightnessEvent.class))).thenReturn(brightness);