summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2022-02-25 14:24:54 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2022-02-25 14:24:54 +0000
commit5a53a4980318863cf4c44c3e56c8a10edc4bd353 (patch)
treeceafe9759e8ad9d5113fc8be7b07076d9a41c8c5
parent0c7f85a13b4b70b7d259a779f5f34e443c780265 (diff)
parent622b3a38dc1f73696c9d1544ddb3c7004df554ac (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.java2
-rw-r--r--services/core/java/com/android/server/display/LocalDisplayAdapter.java18
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(