diff options
9 files changed, 60 insertions, 49 deletions
diff --git a/services/core/java/com/android/server/display/AutomaticBrightnessController.java b/services/core/java/com/android/server/display/AutomaticBrightnessController.java index eb2c7e6105ae..93cada7adca3 100644 --- a/services/core/java/com/android/server/display/AutomaticBrightnessController.java +++ b/services/core/java/com/android/server/display/AutomaticBrightnessController.java @@ -208,7 +208,6 @@ class AutomaticBrightnessController { private PackageManager mPackageManager; private Context mContext; - private DisplayDeviceConfig mDisplayDeviceConfig; private final Injector mInjector; AutomaticBrightnessController(Callbacks callbacks, Looper looper, @@ -217,14 +216,13 @@ class AutomaticBrightnessController { float dozeScaleFactor, int lightSensorRate, int initialLightSensorRate, long brighteningLightDebounceConfig, long darkeningLightDebounceConfig, boolean resetAmbientLuxAfterWarmUpConfig, HysteresisLevels ambientBrightnessThresholds, - HysteresisLevels screenBrightnessThresholds, Context context, DisplayDeviceConfig - displayDeviceConfig) { + HysteresisLevels screenBrightnessThresholds, Context context) { this(new Injector(), callbacks, looper, sensorManager, lightSensor, mapper, lightSensorWarmUpTime, brightnessMin, brightnessMax, dozeScaleFactor, lightSensorRate, initialLightSensorRate, brighteningLightDebounceConfig, darkeningLightDebounceConfig, resetAmbientLuxAfterWarmUpConfig, - ambientBrightnessThresholds, screenBrightnessThresholds, context, - displayDeviceConfig); + ambientBrightnessThresholds, screenBrightnessThresholds, context + ); } @VisibleForTesting @@ -234,8 +232,7 @@ class AutomaticBrightnessController { float dozeScaleFactor, int lightSensorRate, int initialLightSensorRate, long brighteningLightDebounceConfig, long darkeningLightDebounceConfig, boolean resetAmbientLuxAfterWarmUpConfig, HysteresisLevels ambientBrightnessThresholds, - HysteresisLevels screenBrightnessThresholds, Context context, DisplayDeviceConfig - displayDeviceConfig) { + HysteresisLevels screenBrightnessThresholds, Context context) { mInjector = injector; mContext = context; mCallbacks = callbacks; @@ -257,7 +254,6 @@ class AutomaticBrightnessController { mScreenBrightnessThresholds = screenBrightnessThresholds; mShortTermModelValid = true; mShortTermModelAnchor = -1; - mDisplayDeviceConfig = displayDeviceConfig; mHandler = new AutomaticBrightnessHandler(looper); mAmbientLightRingBuffer = new AmbientLightRingBuffer(mNormalLightSensorRate, mAmbientLightHorizon); diff --git a/services/core/java/com/android/server/display/DisplayBlanker.java b/services/core/java/com/android/server/display/DisplayBlanker.java index d294898da8c4..e2129ba13626 100644 --- a/services/core/java/com/android/server/display/DisplayBlanker.java +++ b/services/core/java/com/android/server/display/DisplayBlanker.java @@ -20,5 +20,5 @@ package com.android.server.display; * Interface used to update the actual display state. */ public interface DisplayBlanker { - void requestDisplayState(int state, float brightness); + void requestDisplayState(int displayId, int state, float brightness); } diff --git a/services/core/java/com/android/server/display/DisplayManagerService.java b/services/core/java/com/android/server/display/DisplayManagerService.java index ca94efc3e5a0..ffce3be4b769 100644 --- a/services/core/java/com/android/server/display/DisplayManagerService.java +++ b/services/core/java/com/android/server/display/DisplayManagerService.java @@ -2382,7 +2382,7 @@ public final class DisplayManagerService extends SystemService { synchronized (mSyncRoot) { DisplayBlanker blanker = new DisplayBlanker() { @Override - public void requestDisplayState(int state, float brightness) { + public void requestDisplayState(int displayId, int state, float brightness) { // The order of operations is important for legacy reasons. if (state == Display.STATE_OFF) { requestGlobalDisplayStateInternal(state, brightness); @@ -2395,11 +2395,9 @@ public final class DisplayManagerService extends SystemService { } } }; - LogicalDisplay defaultDisplay = - mLogicalDisplayMapper.getLocked(Display.DEFAULT_DISPLAY); - DisplayDevice defaultDevice = defaultDisplay.getPrimaryDisplayDeviceLocked(); mDisplayPowerController = new DisplayPowerController( - mContext, callbacks, handler, sensorManager, blanker, defaultDevice); + mContext, callbacks, handler, sensorManager, blanker, + Display.DEFAULT_DISPLAY); mSensorManager = sensorManager; } diff --git a/services/core/java/com/android/server/display/DisplayPowerController.java b/services/core/java/com/android/server/display/DisplayPowerController.java index 58ef9d11ef97..0211876c864d 100644 --- a/services/core/java/com/android/server/display/DisplayPowerController.java +++ b/services/core/java/com/android/server/display/DisplayPowerController.java @@ -163,8 +163,8 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call // The display blanker. private final DisplayBlanker mBlanker; - // The display device. - private final DisplayDevice mDisplayDevice; + // The ID of the LogicalDisplay tied to this DisplayPowerController. + private final int mDisplayId; // Tracker for brightness changes. private final BrightnessTracker mBrightnessTracker; @@ -406,7 +406,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call */ public DisplayPowerController(Context context, DisplayPowerCallbacks callbacks, Handler handler, - SensorManager sensorManager, DisplayBlanker blanker, DisplayDevice displayDevice) { + SensorManager sensorManager, DisplayBlanker blanker, int displayId) { mHandler = new DisplayControllerHandler(handler.getLooper()); mBrightnessTracker = new BrightnessTracker(context, null); mSettingsObserver = new SettingsObserver(mHandler); @@ -417,10 +417,9 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call mBlanker = blanker; mContext = context; mBrightnessSynchronizer = new BrightnessSynchronizer(context); - mDisplayDevice = displayDevice; + mDisplayId = displayId; PowerManager pm = context.getSystemService(PowerManager.class); - DisplayDeviceConfig displayDeviceConfig = mDisplayDevice.getDisplayDeviceConfig(); final Resources resources = context.getResources(); @@ -515,7 +514,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call mScreenBrightnessRangeMaximum, dozeScaleFactor, lightSensorRate, initialLightSensorRate, brighteningLightDebounce, darkeningLightDebounce, autoBrightnessResetAmbientLuxAfterWarmUp, ambientBrightnessThresholds, - screenBrightnessThresholds, context, displayDeviceConfig); + screenBrightnessThresholds, context); } else { mUseSoftwareAutoBrightnessConfig = false; } @@ -684,7 +683,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call // Initialize the power state object for the default display. // In the future, we might manage multiple displays independently. mPowerState = new DisplayPowerState(mBlanker, - mColorFadeEnabled ? new ColorFade(Display.DEFAULT_DISPLAY) : null); + mColorFadeEnabled ? new ColorFade(mDisplayId) : null, mDisplayId); if (mColorFadeEnabled) { mColorFadeOnAnimator = ObjectAnimator.ofFloat( @@ -1153,7 +1152,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call if (ready && state != Display.STATE_OFF && mReportedScreenStateToPolicy == REPORTED_TO_POLICY_SCREEN_TURNING_ON) { setReportedScreenState(REPORTED_TO_POLICY_SCREEN_ON); - mWindowManagerPolicy.screenTurnedOn(); + mWindowManagerPolicy.screenTurnedOn(mDisplayId); } // Grab a wake lock if we have unfinished business. @@ -1277,7 +1276,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call if (mReportedScreenStateToPolicy == REPORTED_TO_POLICY_SCREEN_ON) { setReportedScreenState(REPORTED_TO_POLICY_SCREEN_TURNING_OFF); blockScreenOff(); - mWindowManagerPolicy.screenTurningOff(mPendingScreenOffUnblocker); + mWindowManagerPolicy.screenTurningOff(mDisplayId, mPendingScreenOffUnblocker); unblockScreenOff(); } else if (mPendingScreenOffUnblocker != null) { // Abort doing the state change until screen off is unblocked. @@ -1309,14 +1308,14 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call && !mScreenOffBecauseOfProximity) { setReportedScreenState(REPORTED_TO_POLICY_SCREEN_OFF); unblockScreenOn(); - mWindowManagerPolicy.screenTurnedOff(); + mWindowManagerPolicy.screenTurnedOff(mDisplayId); } else if (!isOff && mReportedScreenStateToPolicy == REPORTED_TO_POLICY_SCREEN_TURNING_OFF) { // We told policy already that screen was turning off, but now we changed our minds. // Complete the full state transition on -> turningOff -> off. unblockScreenOff(); - mWindowManagerPolicy.screenTurnedOff(); + mWindowManagerPolicy.screenTurnedOff(mDisplayId); setReportedScreenState(REPORTED_TO_POLICY_SCREEN_OFF); } if (!isOff && mReportedScreenStateToPolicy == REPORTED_TO_POLICY_SCREEN_OFF) { @@ -1326,7 +1325,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call } else { unblockScreenOn(); } - mWindowManagerPolicy.screenTurningOn(mPendingScreenOnUnblocker); + mWindowManagerPolicy.screenTurningOn(mDisplayId, mPendingScreenOnUnblocker); } // Return true if the screen isn't blocked. diff --git a/services/core/java/com/android/server/display/DisplayPowerState.java b/services/core/java/com/android/server/display/DisplayPowerState.java index 4b6430d5197c..54f30a954c33 100644 --- a/services/core/java/com/android/server/display/DisplayPowerState.java +++ b/services/core/java/com/android/server/display/DisplayPowerState.java @@ -58,6 +58,7 @@ final class DisplayPowerState { private final DisplayBlanker mBlanker; private final ColorFade mColorFade; private final PhotonicModulator mPhotonicModulator; + private final int mDisplayId; private int mScreenState; private float mScreenBrightness; @@ -71,13 +72,14 @@ final class DisplayPowerState { private Runnable mCleanListener; - public DisplayPowerState(DisplayBlanker blanker, ColorFade colorFade) { + public DisplayPowerState(DisplayBlanker blanker, ColorFade colorFade, int displayId) { mHandler = new Handler(true /*async*/); mChoreographer = Choreographer.getInstance(); mBlanker = blanker; mColorFade = colorFade; mPhotonicModulator = new PhotonicModulator(); mPhotonicModulator.start(); + mDisplayId = displayId; // At boot time, we know that the screen is on and the electron beam // animation is not playing. We don't know the screen's brightness though, @@ -434,10 +436,10 @@ final class DisplayPowerState { // Apply pending change. if (DEBUG) { - Slog.d(TAG, "Updating screen state: state=" + Slog.d(TAG, "Updating screen state: id=" + mDisplayId + ", state=" + Display.stateToString(state) + ", backlight=" + brightnessState); } - mBlanker.requestDisplayState(state, brightnessState); + mBlanker.requestDisplayState(mDisplayId, state, brightnessState); } } } diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java index df283e210be8..0313aaeef0d6 100644 --- a/services/core/java/com/android/server/policy/PhoneWindowManager.java +++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java @@ -4506,7 +4506,11 @@ public class PhoneWindowManager implements WindowManagerPolicy { // Called on the DisplayManager's DisplayPowerController thread. @Override - public void screenTurnedOff() { + public void screenTurnedOff(int displayId) { + if (displayId != DEFAULT_DISPLAY) { + return; + } + if (DEBUG_WAKEUP) Slog.i(TAG, "Screen turned off..."); updateScreenOffSleepToken(true); @@ -4529,7 +4533,11 @@ public class PhoneWindowManager implements WindowManagerPolicy { // Called on the DisplayManager's DisplayPowerController thread. @Override - public void screenTurningOn(final ScreenOnListener screenOnListener) { + public void screenTurningOn(int displayId, final ScreenOnListener screenOnListener) { + if (displayId != DEFAULT_DISPLAY) { + return; + } + if (DEBUG_WAKEUP) Slog.i(TAG, "Screen turning on..."); Trace.asyncTraceBegin(Trace.TRACE_TAG_WINDOW_MANAGER, "screenTurningOn", 0 /* cookie */); @@ -4552,7 +4560,11 @@ public class PhoneWindowManager implements WindowManagerPolicy { // Called on the DisplayManager's DisplayPowerController thread. @Override - public void screenTurnedOn() { + public void screenTurnedOn(int displayId) { + if (displayId != DEFAULT_DISPLAY) { + return; + } + synchronized (mLock) { if (mKeyguardDelegate != null) { mKeyguardDelegate.onScreenTurnedOn(); @@ -4562,7 +4574,11 @@ public class PhoneWindowManager implements WindowManagerPolicy { } @Override - public void screenTurningOff(ScreenOffListener screenOffListener) { + public void screenTurningOff(int displayId, ScreenOffListener screenOffListener) { + if (displayId != DEFAULT_DISPLAY) { + return; + } + mWindowManagerFuncs.screenTurningOff(screenOffListener); synchronized (mLock) { if (mKeyguardDelegate != null) { @@ -4824,8 +4840,8 @@ public class PhoneWindowManager implements WindowManagerPolicy { } startedWakingUp(ON_BECAUSE_OF_UNKNOWN); finishedWakingUp(ON_BECAUSE_OF_UNKNOWN); - screenTurningOn(null); - screenTurnedOn(); + screenTurningOn(DEFAULT_DISPLAY, null); + screenTurnedOn(DEFAULT_DISPLAY); } @Override diff --git a/services/core/java/com/android/server/policy/WindowManagerPolicy.java b/services/core/java/com/android/server/policy/WindowManagerPolicy.java index b96d65cb7433..0d8d3470ec65 100644 --- a/services/core/java/com/android/server/policy/WindowManagerPolicy.java +++ b/services/core/java/com/android/server/policy/WindowManagerPolicy.java @@ -831,7 +831,7 @@ public interface WindowManagerPolicy extends WindowManagerPolicyConstants { public void finishedGoingToSleep(int why); /** - * Called when the device is about to turn on the screen to show content. + * Called when the display is about to turn on to show content. * When waking up, this method will be called once after the call to wakingUp(). * When dozing, the method will be called sometime after the call to goingToSleep() and * may be called repeatedly in the case where the screen is pulsing on and off. @@ -839,13 +839,13 @@ public interface WindowManagerPolicy extends WindowManagerPolicyConstants { * Must call back on the listener to tell it when the higher-level system * is ready for the screen to go on (i.e. the lock screen is shown). */ - public void screenTurningOn(ScreenOnListener screenOnListener); + public void screenTurningOn(int displayId, ScreenOnListener screenOnListener); /** - * Called when the device has actually turned on the screen, i.e. the display power state has - * been set to ON and the screen is unblocked. + * Called when the display has actually turned on, i.e. the display power state has been set to + * ON and the screen is unblocked. */ - public void screenTurnedOn(); + public void screenTurnedOn(int displayId); /** * Called when the display would like to be turned off. This gives policy a chance to do some @@ -854,12 +854,12 @@ public interface WindowManagerPolicy extends WindowManagerPolicyConstants { * @param screenOffListener Must be called to tell that the display power state can actually be * changed now after policy has done its work. */ - public void screenTurningOff(ScreenOffListener screenOffListener); + public void screenTurningOff(int displayId, ScreenOffListener screenOffListener); /** - * Called when the device has turned the screen off. + * Called when the display has turned off. */ - public void screenTurnedOff(); + public void screenTurnedOff(int displayId); public interface ScreenOnListener { void onScreenOn(); diff --git a/services/tests/servicestests/src/com/android/server/display/AutomaticBrightnessControllerTest.java b/services/tests/servicestests/src/com/android/server/display/AutomaticBrightnessControllerTest.java index b69cc47ba738..ec747acd376d 100644 --- a/services/tests/servicestests/src/com/android/server/display/AutomaticBrightnessControllerTest.java +++ b/services/tests/servicestests/src/com/android/server/display/AutomaticBrightnessControllerTest.java @@ -83,8 +83,8 @@ public class AutomaticBrightnessControllerTest { BRIGHTNESS_MAX_FLOAT, DOZE_SCALE_FACTOR, LIGHT_SENSOR_RATE, INITIAL_LIGHT_SENSOR_RATE, BRIGHTENING_LIGHT_DEBOUNCE_CONFIG, DARKENING_LIGHT_DEBOUNCE_CONFIG, RESET_AMBIENT_LUX_AFTER_WARMUP_CONFIG, - mAmbientBrightnessThresholds, mScreenBrightnessThresholds, mContext, - mDisplayDeviceConfig); + mAmbientBrightnessThresholds, mScreenBrightnessThresholds, mContext + ); controller.setLoggingEnabled(true); // Configure the brightness controller and grab an instance of the sensor listener, diff --git a/services/tests/wmtests/src/com/android/server/wm/TestWindowManagerPolicy.java b/services/tests/wmtests/src/com/android/server/wm/TestWindowManagerPolicy.java index dc859046db42..db5c7965ebee 100644 --- a/services/tests/wmtests/src/com/android/server/wm/TestWindowManagerPolicy.java +++ b/services/tests/wmtests/src/com/android/server/wm/TestWindowManagerPolicy.java @@ -197,19 +197,19 @@ class TestWindowManagerPolicy implements WindowManagerPolicy { } @Override - public void screenTurningOn(ScreenOnListener screenOnListener) { + public void screenTurningOn(int displayId, ScreenOnListener screenOnListener) { } @Override - public void screenTurnedOn() { + public void screenTurnedOn(int displayId) { } @Override - public void screenTurningOff(ScreenOffListener screenOffListener) { + public void screenTurningOff(int displayId, ScreenOffListener screenOffListener) { } @Override - public void screenTurnedOff() { + public void screenTurnedOff(int displayId) { } @Override |