diff options
| author | 2022-02-25 14:24:54 +0000 | |
|---|---|---|
| committer | 2022-02-25 14:24:54 +0000 | |
| commit | 5a53a4980318863cf4c44c3e56c8a10edc4bd353 (patch) | |
| tree | ceafe9759e8ad9d5113fc8be7b07076d9a41c8c5 | |
| parent | 0c7f85a13b4b70b7d259a779f5f34e443c780265 (diff) | |
| parent | 622b3a38dc1f73696c9d1544ddb3c7004df554ac (diff) | |
Merge "Propagate user preferred mode to SurfaceControl, only if it has changed." into tm-dev
| -rw-r--r-- | services/core/java/com/android/server/display/DisplayManagerService.java | 2 | ||||
| -rw-r--r-- | services/core/java/com/android/server/display/LocalDisplayAdapter.java | 18 |
2 files changed, 13 insertions, 7 deletions
diff --git a/services/core/java/com/android/server/display/DisplayManagerService.java b/services/core/java/com/android/server/display/DisplayManagerService.java index a7b49f1e51b0..9bfdd687644b 100644 --- a/services/core/java/com/android/server/display/DisplayManagerService.java +++ b/services/core/java/com/android/server/display/DisplayManagerService.java @@ -2463,7 +2463,7 @@ public final class DisplayManagerService extends SystemService { pw.println(" mMinimumBrightnessCurve=" + mMinimumBrightnessCurve); if (mUserPreferredMode != null) { - pw.println(mUserPreferredMode); + pw.println(" mUserPreferredMode=" + mUserPreferredMode); } pw.println(); diff --git a/services/core/java/com/android/server/display/LocalDisplayAdapter.java b/services/core/java/com/android/server/display/LocalDisplayAdapter.java index 2e80efb957d4..7a0cf4b592e7 100644 --- a/services/core/java/com/android/server/display/LocalDisplayAdapter.java +++ b/services/core/java/com/android/server/display/LocalDisplayAdapter.java @@ -884,20 +884,26 @@ final class LocalDisplayAdapter extends DisplayAdapter { public void setUserPreferredDisplayModeLocked(Display.Mode mode) { final int oldModeId = getPreferredModeId(); mUserPreferredMode = mode; - if (mode != null && (mode.isRefreshRateSet() ^ mode.isResolutionSet())) { - mUserPreferredMode = findMode(mode.getPhysicalWidth(), + if (mode != null && (mode.isRefreshRateSet() || mode.isResolutionSet())) { + Display.Mode matchingSupportedMode; + matchingSupportedMode = findMode(mode.getPhysicalWidth(), mode.getPhysicalHeight(), mode.getRefreshRate()); + if (matchingSupportedMode != null) { + mUserPreferredMode = matchingSupportedMode; + } } - mUserPreferredModeId = findUserPreferredModeIdLocked(mode); - if (oldModeId != getPreferredModeId()) { - updateDeviceInfoLocked(); + mUserPreferredModeId = findUserPreferredModeIdLocked(mUserPreferredMode); + + if (oldModeId == getPreferredModeId()) { + return; } + updateDeviceInfoLocked(); if (!mSurfaceControlProxy.getBootDisplayModeSupport()) { return; } - if (mUserPreferredMode == null) { + if (mUserPreferredModeId == INVALID_MODE_ID) { mSurfaceControlProxy.clearBootDisplayMode(getDisplayTokenLocked()); } else { int preferredSfDisplayModeId = findSfDisplayModeIdLocked( |