Propagate user preferred mode to SurfaceControl, only if it has changed.

Bug: 219968277
Test: atest LocalDisplayAdapterTest
Change-Id: I3ad062be7c53c88f7312de12677fda39433ecb77
This commit is contained in:
Kriti Dang
2022-02-17 11:51:05 +01:00
committed by Nicolo' Mazzucato
parent ddb497d64a
commit 622b3a38dc
2 changed files with 13 additions and 7 deletions

View File

@@ -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();

View File

@@ -871,20 +871,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 {
mSurfaceControlProxy.setBootDisplayMode(getDisplayTokenLocked(),