diff --git a/services/core/java/com/android/server/display/DisplayManagerService.java b/services/core/java/com/android/server/display/DisplayManagerService.java index b153c1ba98e06..a00fadc89973a 100644 --- a/services/core/java/com/android/server/display/DisplayManagerService.java +++ b/services/core/java/com/android/server/display/DisplayManagerService.java @@ -2583,7 +2583,7 @@ public final class DisplayManagerService extends SystemService { // initPowerManagement has not yet been called. return; } - if (mBrightnessTracker == null) { + if (mBrightnessTracker == null && display.getDisplayIdLocked() == Display.DEFAULT_DISPLAY) { mBrightnessTracker = new BrightnessTracker(mContext, null); } diff --git a/services/core/java/com/android/server/display/DisplayPowerController.java b/services/core/java/com/android/server/display/DisplayPowerController.java index efd2e34144666..3e627021b56f7 100644 --- a/services/core/java/com/android/server/display/DisplayPowerController.java +++ b/services/core/java/com/android/server/display/DisplayPowerController.java @@ -920,7 +920,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call // Initialize all of the brightness tracking state final float brightness = convertToNits(mPowerState.getScreenBrightness()); - if (brightness >= PowerManager.BRIGHTNESS_MIN) { + if (mBrightnessTracker != null && brightness >= PowerManager.BRIGHTNESS_MIN) { mBrightnessTracker.start(brightness); } mBrightnessSettingListener = brightnessValue -> { @@ -1026,7 +1026,9 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call } loadAmbientLightSensor(); - if (mBrightnessTracker != null) { + // BrightnessTracker should only use one light sensor, we want to use the light sensor + // from the default display and not e.g. temporary displays when switching layouts. + if (mBrightnessTracker != null && mDisplayId == Display.DEFAULT_DISPLAY) { mBrightnessTracker.setLightSensor(mLightSensor); } @@ -2434,7 +2436,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call boolean hadUserDataPoint) { final float brightnessInNits = convertToNits(brightness); if (mPowerRequest.useAutoBrightness && brightnessInNits >= 0.0f - && mAutomaticBrightnessController != null) { + && mAutomaticBrightnessController != null && mBrightnessTracker != null) { // We only want to track changes on devices that can actually map the display backlight // values into a physical brightness unit since the value provided by the API is in // nits and not using the arbitrary backlight units.