Only load default lightsensor for Brightness Tracker
Previously, we were setting new light sensors each time the display changed. This meant that during transitions between displays, multiple light sensors could get loaded since we create temporary displays during transitions. This cl ensures we are only using the light sensor of the default display, since, for now, BrightnessTracker can only take one lightsensor. We also only load the brightness tracker for the default dpc, since other displays will not use this. Bug: 248261521 Test: com.android.server.display Test: dumpsys display | grep -A40 "active connections" and ensure there is only one instance of a brightness tracker connection. Change-Id: If0397af675caed0568bed06d82f7d925002c8df8
This commit is contained in:
@@ -2609,7 +2609,8 @@ 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);
|
||||
}
|
||||
|
||||
|
||||
@@ -927,7 +927,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 -> {
|
||||
@@ -1059,7 +1059,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);
|
||||
}
|
||||
|
||||
@@ -2485,7 +2487,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.
|
||||
|
||||
@@ -903,7 +903,7 @@ final class DisplayPowerController2 implements AutomaticBrightnessController.Cal
|
||||
|
||||
// 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 -> {
|
||||
@@ -1035,7 +1035,9 @@ final class DisplayPowerController2 implements AutomaticBrightnessController.Cal
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
@@ -2439,7 +2441,7 @@ final class DisplayPowerController2 implements AutomaticBrightnessController.Cal
|
||||
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.
|
||||
|
||||
Reference in New Issue
Block a user