Merge changes I13cf865d,I64f86810,Ic05ee5b2,I6acaea66
* changes: Fix display javadoc params. Stop shadowing DisplayDeviceConfig. Replace comments with @GuardedBy annotations. Add hashCode method to BrightnessReason
This commit is contained in:
committed by
Android (Google) Code Review
commit
f3eb84f9ea
@@ -75,6 +75,7 @@ import com.android.server.display.whitebalance.DisplayWhiteBalanceSettings;
|
||||
import com.android.server.policy.WindowManagerPolicy;
|
||||
|
||||
import java.io.PrintWriter;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* Controls the power state of the display.
|
||||
@@ -236,42 +237,42 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
||||
|
||||
// True if we should fade the screen while turning it off, false if we should play
|
||||
// a stylish color fade animation instead.
|
||||
private boolean mColorFadeFadesConfig;
|
||||
private final boolean mColorFadeFadesConfig;
|
||||
|
||||
// True if we need to fake a transition to off when coming out of a doze state.
|
||||
// Some display hardware will blank itself when coming out of doze in order to hide
|
||||
// artifacts. For these displays we fake a transition into OFF so that policy can appropriately
|
||||
// blank itself and begin an appropriate power on animation.
|
||||
private boolean mDisplayBlanksAfterDozeConfig;
|
||||
private final boolean mDisplayBlanksAfterDozeConfig;
|
||||
|
||||
// True if there are only buckets of brightness values when the display is in the doze state,
|
||||
// rather than a full range of values. If this is true, then we'll avoid animating the screen
|
||||
// brightness since it'd likely be multiple jarring brightness transitions instead of just one
|
||||
// to reach the final state.
|
||||
private boolean mBrightnessBucketsInDozeConfig;
|
||||
private final boolean mBrightnessBucketsInDozeConfig;
|
||||
|
||||
// The pending power request.
|
||||
// Initially null until the first call to requestPowerState.
|
||||
// Guarded by mLock.
|
||||
@GuardedBy("mLock")
|
||||
private DisplayPowerRequest mPendingRequestLocked;
|
||||
|
||||
// True if a request has been made to wait for the proximity sensor to go negative.
|
||||
// Guarded by mLock.
|
||||
@GuardedBy("mLock")
|
||||
private boolean mPendingWaitForNegativeProximityLocked;
|
||||
|
||||
// True if the pending power request or wait for negative proximity flag
|
||||
// has been changed since the last update occurred.
|
||||
// Guarded by mLock.
|
||||
@GuardedBy("mLock")
|
||||
private boolean mPendingRequestChangedLocked;
|
||||
|
||||
// Set to true when the important parts of the pending power request have been applied.
|
||||
// The important parts are mainly the screen state. Brightness changes may occur
|
||||
// concurrently.
|
||||
// Guarded by mLock.
|
||||
@GuardedBy("mLock")
|
||||
private boolean mDisplayReadyLocked;
|
||||
|
||||
// Set to true if a power state update is required.
|
||||
// Guarded by mLock.
|
||||
@GuardedBy("mLock")
|
||||
private boolean mPendingUpdatePowerStateLocked;
|
||||
|
||||
/* The following state must only be accessed by the handler thread. */
|
||||
@@ -352,8 +353,8 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
||||
// information.
|
||||
// At the time of this writing, this value is changed within updatePowerState() only, which is
|
||||
// limited to the thread used by DisplayControllerHandler.
|
||||
private BrightnessReason mBrightnessReason = new BrightnessReason();
|
||||
private BrightnessReason mBrightnessReasonTemp = new BrightnessReason();
|
||||
private final BrightnessReason mBrightnessReason = new BrightnessReason();
|
||||
private final BrightnessReason mBrightnessReasonTemp = new BrightnessReason();
|
||||
|
||||
// Brightness animation ramp rates in brightness units per second
|
||||
private float mBrightnessRampRateFastDecrease;
|
||||
@@ -849,6 +850,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
||||
}
|
||||
}
|
||||
|
||||
@GuardedBy("mLock")
|
||||
private void sendUpdatePowerStateLocked() {
|
||||
if (!mStopped && !mPendingUpdatePowerStateLocked) {
|
||||
mPendingUpdatePowerStateLocked = true;
|
||||
@@ -2318,6 +2320,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
||||
return mAutomaticBrightnessController.convertToNits(brightness);
|
||||
}
|
||||
|
||||
@GuardedBy("mLock")
|
||||
private void updatePendingProximityRequestsLocked() {
|
||||
mWaitingForNegativeProximity |= mPendingWaitForNegativeProximityLocked;
|
||||
mPendingWaitForNegativeProximityLocked = false;
|
||||
@@ -2421,12 +2424,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
||||
pw.println(" mDisplayBlanksAfterDozeConfig=" + mDisplayBlanksAfterDozeConfig);
|
||||
pw.println(" mBrightnessBucketsInDozeConfig=" + mBrightnessBucketsInDozeConfig);
|
||||
|
||||
mHandler.runWithScissors(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
dumpLocal(pw);
|
||||
}
|
||||
}, 1000);
|
||||
mHandler.runWithScissors(() -> dumpLocal(pw), 1000);
|
||||
}
|
||||
|
||||
private void dumpLocal(PrintWriter pw) {
|
||||
@@ -2458,6 +2456,9 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
||||
pw.println(" mAppliedThrottling=" + mAppliedThrottling);
|
||||
pw.println(" mAppliedScreenBrightnessOverride=" + mAppliedScreenBrightnessOverride);
|
||||
pw.println(" mAppliedTemporaryBrightness=" + mAppliedTemporaryBrightness);
|
||||
pw.println(" mAppliedTemporaryAutoBrightnessAdjustment="
|
||||
+ mAppliedTemporaryAutoBrightnessAdjustment);
|
||||
pw.println(" mAppliedBrightnessBoost=" + mAppliedBrightnessBoost);
|
||||
pw.println(" mDozing=" + mDozing);
|
||||
pw.println(" mSkipRampState=" + skipRampStateToString(mSkipRampState));
|
||||
pw.println(" mScreenOnBlockStartRealTime=" + mScreenOnBlockStartRealTime);
|
||||
@@ -2465,21 +2466,21 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
||||
pw.println(" mPendingScreenOnUnblocker=" + mPendingScreenOnUnblocker);
|
||||
pw.println(" mPendingScreenOffUnblocker=" + mPendingScreenOffUnblocker);
|
||||
pw.println(" mPendingScreenOff=" + mPendingScreenOff);
|
||||
pw.println(" mReportedToPolicy=" +
|
||||
reportedToPolicyToString(mReportedScreenStateToPolicy));
|
||||
pw.println(" mReportedToPolicy="
|
||||
+ reportedToPolicyToString(mReportedScreenStateToPolicy));
|
||||
|
||||
if (mScreenBrightnessRampAnimator != null) {
|
||||
pw.println(" mScreenBrightnessRampAnimator.isAnimating()=" +
|
||||
mScreenBrightnessRampAnimator.isAnimating());
|
||||
pw.println(" mScreenBrightnessRampAnimator.isAnimating()="
|
||||
+ mScreenBrightnessRampAnimator.isAnimating());
|
||||
}
|
||||
|
||||
if (mColorFadeOnAnimator != null) {
|
||||
pw.println(" mColorFadeOnAnimator.isStarted()=" +
|
||||
mColorFadeOnAnimator.isStarted());
|
||||
pw.println(" mColorFadeOnAnimator.isStarted()="
|
||||
+ mColorFadeOnAnimator.isStarted());
|
||||
}
|
||||
if (mColorFadeOffAnimator != null) {
|
||||
pw.println(" mColorFadeOffAnimator.isStarted()=" +
|
||||
mColorFadeOffAnimator.isStarted());
|
||||
pw.println(" mColorFadeOffAnimator.isStarted()="
|
||||
+ mColorFadeOffAnimator.isStarted());
|
||||
}
|
||||
|
||||
if (mPowerState != null) {
|
||||
@@ -2605,7 +2606,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
||||
}
|
||||
}
|
||||
|
||||
private final void logHbmBrightnessStats(float brightness, int displayStatsId) {
|
||||
private void logHbmBrightnessStats(float brightness, int displayStatsId) {
|
||||
synchronized (mHandler) {
|
||||
FrameworkStatsLog.write(
|
||||
FrameworkStatsLog.DISPLAY_HBM_BRIGHTNESS_CHANGED, displayStatsId, brightness);
|
||||
@@ -2824,13 +2825,18 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if (obj == null || !(obj instanceof BrightnessReason)) {
|
||||
if (!(obj instanceof BrightnessReason)) {
|
||||
return false;
|
||||
}
|
||||
BrightnessReason other = (BrightnessReason) obj;
|
||||
return other.reason == reason && other.modifier == modifier;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(reason, modifier);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return toString(0);
|
||||
|
||||
@@ -182,8 +182,11 @@ final class LocalDisplayAdapter extends DisplayAdapter {
|
||||
private final long mPhysicalDisplayId;
|
||||
private final SparseArray<DisplayModeRecord> mSupportedModes = new SparseArray<>();
|
||||
private final ArrayList<Integer> mSupportedColorModes = new ArrayList<>();
|
||||
private final DisplayModeDirector.DesiredDisplayModeSpecs mDisplayModeSpecs =
|
||||
new DisplayModeDirector.DesiredDisplayModeSpecs();
|
||||
private final boolean mIsDefaultDisplay;
|
||||
private final BacklightAdapter mBacklightAdapter;
|
||||
private final SidekickInternal mSidekickInternal;
|
||||
|
||||
private DisplayDeviceInfo mInfo;
|
||||
private boolean mHavePendingChanges;
|
||||
@@ -200,8 +203,6 @@ final class LocalDisplayAdapter extends DisplayAdapter {
|
||||
private int mActiveDisplayModeAtStartId = INVALID_MODE_ID;
|
||||
private Display.Mode mUserPreferredMode;
|
||||
private int mActiveModeId = INVALID_MODE_ID;
|
||||
private DisplayModeDirector.DesiredDisplayModeSpecs mDisplayModeSpecs =
|
||||
new DisplayModeDirector.DesiredDisplayModeSpecs();
|
||||
private boolean mDisplayModeSpecsInvalid;
|
||||
private int mActiveColorMode;
|
||||
private Display.HdrCapabilities mHdrCapabilities;
|
||||
@@ -210,13 +211,11 @@ final class LocalDisplayAdapter extends DisplayAdapter {
|
||||
private boolean mAllmRequested;
|
||||
private boolean mGameContentTypeRequested;
|
||||
private boolean mSidekickActive;
|
||||
private SidekickInternal mSidekickInternal;
|
||||
private SurfaceControl.StaticDisplayInfo mStaticDisplayInfo;
|
||||
// The supported display modes according to SurfaceFlinger
|
||||
private SurfaceControl.DisplayMode[] mSfDisplayModes;
|
||||
// The active display mode in SurfaceFlinger
|
||||
private SurfaceControl.DisplayMode mActiveSfDisplayMode;
|
||||
private DisplayDeviceConfig mDisplayDeviceConfig;
|
||||
|
||||
private DisplayEventReceiver.FrameRateOverride[] mFrameRateOverrides =
|
||||
new DisplayEventReceiver.FrameRateOverride[0];
|
||||
@@ -233,7 +232,6 @@ final class LocalDisplayAdapter extends DisplayAdapter {
|
||||
mSidekickInternal = LocalServices.getService(SidekickInternal.class);
|
||||
mBacklightAdapter = new BacklightAdapter(displayToken, isDefaultDisplay,
|
||||
mSurfaceControlProxy);
|
||||
mDisplayDeviceConfig = null;
|
||||
mActiveDisplayModeAtStartId = dynamicInfo.activeDisplayModeId;
|
||||
}
|
||||
|
||||
@@ -459,9 +457,6 @@ final class LocalDisplayAdapter extends DisplayAdapter {
|
||||
final Context context = getOverlayContext();
|
||||
mDisplayDeviceConfig = DisplayDeviceConfig.create(context, mPhysicalDisplayId,
|
||||
mIsDefaultDisplay);
|
||||
if (mDisplayDeviceConfig == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Load brightness HWC quirk
|
||||
mBacklightAdapter.setForceSurfaceControl(mDisplayDeviceConfig.hasQuirk(
|
||||
@@ -1083,8 +1078,8 @@ final class LocalDisplayAdapter extends DisplayAdapter {
|
||||
pw.println("mGameContentTypeRequested=" + mGameContentTypeRequested);
|
||||
pw.println("mStaticDisplayInfo=" + mStaticDisplayInfo);
|
||||
pw.println("mSfDisplayModes=");
|
||||
for (int i = 0; i < mSfDisplayModes.length; i++) {
|
||||
pw.println(" " + mSfDisplayModes[i]);
|
||||
for (SurfaceControl.DisplayMode sfDisplayMode : mSfDisplayModes) {
|
||||
pw.println(" " + sfDisplayMode);
|
||||
}
|
||||
pw.println("mActiveSfDisplayMode=" + mActiveSfDisplayMode);
|
||||
pw.println("mSupportedModes=");
|
||||
@@ -1238,6 +1233,8 @@ final class LocalDisplayAdapter extends DisplayAdapter {
|
||||
}
|
||||
|
||||
public static class Injector {
|
||||
// Native callback.
|
||||
@SuppressWarnings("unused")
|
||||
private ProxyDisplayEventReceiver mReceiver;
|
||||
public void setDisplayEventListenerLocked(Looper looper, DisplayEventListener listener) {
|
||||
mReceiver = new ProxyDisplayEventReceiver(looper, listener);
|
||||
|
||||
@@ -825,7 +825,6 @@ class LogicalDisplayMapper implements DisplayDeviceRepository.Listener {
|
||||
*
|
||||
* @param device The device to associate with the LogicalDisplay.
|
||||
* @param displayId The display ID to give the new display. If invalid, a new ID is assigned.
|
||||
* @param isDefault Indicates if we are creating the default display.
|
||||
* @return The new logical display if created, null otherwise.
|
||||
*/
|
||||
private LogicalDisplay createNewLogicalDisplayLocked(DisplayDevice device, int displayId) {
|
||||
|
||||
@@ -55,7 +55,7 @@ class RampAnimator<T> {
|
||||
* If this is the first time the property is being set or if the rate is 0,
|
||||
* the value jumps directly to the target.
|
||||
*
|
||||
* @param target The target value.
|
||||
* @param targetLinear The target value.
|
||||
* @param rate The convergence rate in units per second, or 0 to set the value immediately.
|
||||
* @return True if the target differs from the previous target.
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user