Loading services/core/java/com/android/server/display/DisplayModeDirector.java +13 −14 Original line number Diff line number Diff line Loading @@ -237,15 +237,15 @@ public class DisplayModeDirector { lowestConsideredPriority++; } int defaultModeId = defaultMode.getModeId(); int baseModeId = defaultMode.getModeId(); if (availableModes.length > 0) { defaultModeId = availableModes[0]; baseModeId = availableModes[0]; } // filterModes function is going to filter the modes based on the voting system. If // the application requests a given mode with preferredModeId function, it will be // stored as defaultModeId. // stored as baseModeId. return new DesiredDisplayModeSpecs( defaultModeId, new RefreshRateRange(minRefreshRate, maxRefreshRate)); baseModeId, new RefreshRateRange(minRefreshRate, maxRefreshRate)); } } Loading Loading @@ -526,7 +526,7 @@ public class DisplayModeDirector { } /** * Information about the desired display mode to be set by the system. Includes the default * Information about the desired display mode to be set by the system. Includes the base * mode ID and refresh rate range. * * We have this class in addition to SurfaceControl.DesiredDisplayConfigSpecs to make clear the Loading @@ -535,10 +535,10 @@ public class DisplayModeDirector { */ public static final class DesiredDisplayModeSpecs { /** * Default mode ID. This is what system defaults to for all other settings, or * Base mode ID. This is what system defaults to for all other settings, or * if the refresh rate range is not available. */ public int defaultModeId; public int baseModeId; /** * The refresh rate range. */ Loading @@ -548,9 +548,8 @@ public class DisplayModeDirector { refreshRateRange = new RefreshRateRange(); } public DesiredDisplayModeSpecs( int defaultModeId, @NonNull RefreshRateRange refreshRateRange) { this.defaultModeId = defaultModeId; public DesiredDisplayModeSpecs(int baseModeId, @NonNull RefreshRateRange refreshRateRange) { this.baseModeId = baseModeId; this.refreshRateRange = refreshRateRange; } Loading @@ -559,7 +558,7 @@ public class DisplayModeDirector { */ @Override public String toString() { return String.format("defaultModeId=%d min=%.0f max=%.0f", defaultModeId, return String.format("baseModeId=%d min=%.0f max=%.0f", baseModeId, refreshRateRange.min, refreshRateRange.max); } /** Loading @@ -577,7 +576,7 @@ public class DisplayModeDirector { DesiredDisplayModeSpecs desiredDisplayModeSpecs = (DesiredDisplayModeSpecs) other; if (defaultModeId != desiredDisplayModeSpecs.defaultModeId) { if (baseModeId != desiredDisplayModeSpecs.baseModeId) { return false; } if (!refreshRateRange.equals(desiredDisplayModeSpecs.refreshRateRange)) { Loading @@ -588,14 +587,14 @@ public class DisplayModeDirector { @Override public int hashCode() { return Objects.hash(defaultModeId, refreshRateRange); return Objects.hash(baseModeId, refreshRateRange); } /** * Copy values from the other object. */ public void copyFrom(DesiredDisplayModeSpecs other) { defaultModeId = other.defaultModeId; baseModeId = other.baseModeId; refreshRateRange.min = other.refreshRateRange.min; refreshRateRange.max = other.refreshRateRange.max; } Loading services/core/java/com/android/server/display/LocalDisplayAdapter.java +15 −16 Original line number Diff line number Diff line Loading @@ -272,14 +272,14 @@ final class LocalDisplayAdapter extends DisplayAdapter { // Check whether surface flinger spontaneously changed display config specs out from // under us. If so, schedule a traversal to reapply our display config specs. if (mDisplayModeSpecs.defaultModeId != 0) { int activeDefaultMode = if (mDisplayModeSpecs.baseModeId != 0) { int activeBaseMode = findMatchingModeIdLocked(physicalDisplayConfigSpecs.defaultConfig); // If we can't map the defaultConfig index to a mode, then the physical display // configs must have changed, and the code below for handling changes to the // list of available modes will take care of updating display config specs. if (activeDefaultMode != 0) { if (mDisplayModeSpecs.defaultModeId != activeDefaultMode if (activeBaseMode != 0) { if (mDisplayModeSpecs.baseModeId != activeBaseMode || mDisplayModeSpecs.refreshRateRange.min != physicalDisplayConfigSpecs.minRefreshRate || mDisplayModeSpecs.refreshRateRange.max Loading Loading @@ -312,14 +312,14 @@ final class LocalDisplayAdapter extends DisplayAdapter { mDefaultModeId = activeRecord.mMode.getModeId(); } // Determine whether the display mode specs' default mode is still there. if (mSupportedModes.indexOfKey(mDisplayModeSpecs.defaultModeId) < 0) { if (mDisplayModeSpecs.defaultModeId != 0) { // Determine whether the display mode specs' base mode is still there. if (mSupportedModes.indexOfKey(mDisplayModeSpecs.baseModeId) < 0) { if (mDisplayModeSpecs.baseModeId != 0) { Slog.w(TAG, "DisplayModeSpecs default mode no longer available, using currently" + " active mode as default."); "DisplayModeSpecs base mode no longer available, using currently" + " active mode."); } mDisplayModeSpecs.defaultModeId = activeRecord.mMode.getModeId(); mDisplayModeSpecs.baseModeId = activeRecord.mMode.getModeId(); mDisplayModeSpecsInvalid = true; } Loading Loading @@ -648,13 +648,13 @@ final class LocalDisplayAdapter extends DisplayAdapter { @Override public void setDesiredDisplayModeSpecsLocked( DisplayModeDirector.DesiredDisplayModeSpecs displayModeSpecs) { if (displayModeSpecs.defaultModeId == 0) { if (displayModeSpecs.baseModeId == 0) { // Bail if the caller is requesting a null mode. We'll get called again shortly with // a valid mode. return; } int defaultPhysIndex = findDisplayInfoIndexLocked(displayModeSpecs.defaultModeId); if (defaultPhysIndex < 0) { int basePhysIndex = findDisplayInfoIndexLocked(displayModeSpecs.baseModeId); if (basePhysIndex < 0) { // When a display is hotplugged, it's possible for a mode to be removed that was // previously valid. Because of the way display changes are propagated through the // framework, and the caching of the display mode specs in LogicalDisplay, it's Loading @@ -662,8 +662,7 @@ final class LocalDisplayAdapter extends DisplayAdapter { // mode. This should only happen in extremely rare cases. A followup call will // contain a valid mode id. Slog.w(TAG, "Ignoring request for invalid default mode id " + displayModeSpecs.defaultModeId); "Ignoring request for invalid base mode id " + displayModeSpecs.baseModeId); updateDeviceInfoLocked(); return; } Loading @@ -673,7 +672,7 @@ final class LocalDisplayAdapter extends DisplayAdapter { getHandler().sendMessage(PooledLambda.obtainMessage( LocalDisplayDevice::setDesiredDisplayModeSpecsAsync, this, getDisplayTokenLocked(), new SurfaceControl.DesiredDisplayConfigSpecs(defaultPhysIndex, new SurfaceControl.DesiredDisplayConfigSpecs(basePhysIndex, mDisplayModeSpecs.refreshRateRange.min, mDisplayModeSpecs.refreshRateRange.max))); } Loading services/core/java/com/android/server/display/OverlayDisplayAdapter.java +1 −1 Original line number Diff line number Diff line Loading @@ -317,7 +317,7 @@ final class OverlayDisplayAdapter extends DisplayAdapter { @Override public void setDesiredDisplayModeSpecsLocked( DisplayModeDirector.DesiredDisplayModeSpecs displayModeSpecs) { final int id = displayModeSpecs.defaultModeId; final int id = displayModeSpecs.baseModeId; int index = -1; if (id == 0) { // Use the default. Loading services/tests/servicestests/src/com/android/server/display/DisplayModeDirectorTest.java +3 −3 Original line number Diff line number Diff line Loading @@ -78,7 +78,7 @@ public class DisplayModeDirectorTest { int displayId = 0; // With no votes present, DisplayModeDirector should allow any refresh rate. assertEquals(new DisplayModeDirector.DesiredDisplayModeSpecs(/*defaultModeId=*/60, assertEquals(new DisplayModeDirector.DesiredDisplayModeSpecs(/*baseModeId=*/60, new DisplayModeDirector.RefreshRateRange(0f, Float.POSITIVE_INFINITY)), createDisplayModeDirectorWithDisplayFpsRange(60, 90).getDesiredDisplayModeSpecs( displayId)); Loading @@ -105,7 +105,7 @@ public class DisplayModeDirectorTest { director.injectVotesByDisplay(votesByDisplay); assertEquals( new DisplayModeDirector.DesiredDisplayModeSpecs( /*defaultModeId=*/minFps + i, /*baseModeId=*/minFps + i, new DisplayModeDirector.RefreshRateRange(minFps + i, maxFps - i)), director.getDesiredDisplayModeSpecs(displayId)); } Loading @@ -126,7 +126,7 @@ public class DisplayModeDirectorTest { votes.put(DisplayModeDirector.Vote.MIN_PRIORITY, DisplayModeDirector.Vote.forRefreshRates(70, 80)); director.injectVotesByDisplay(votesByDisplay); assertEquals(new DisplayModeDirector.DesiredDisplayModeSpecs(/*defaultModeId=*/70, assertEquals(new DisplayModeDirector.DesiredDisplayModeSpecs(/*baseModeId=*/70, new DisplayModeDirector.RefreshRateRange(70, 80)), director.getDesiredDisplayModeSpecs(displayId)); } Loading Loading
services/core/java/com/android/server/display/DisplayModeDirector.java +13 −14 Original line number Diff line number Diff line Loading @@ -237,15 +237,15 @@ public class DisplayModeDirector { lowestConsideredPriority++; } int defaultModeId = defaultMode.getModeId(); int baseModeId = defaultMode.getModeId(); if (availableModes.length > 0) { defaultModeId = availableModes[0]; baseModeId = availableModes[0]; } // filterModes function is going to filter the modes based on the voting system. If // the application requests a given mode with preferredModeId function, it will be // stored as defaultModeId. // stored as baseModeId. return new DesiredDisplayModeSpecs( defaultModeId, new RefreshRateRange(minRefreshRate, maxRefreshRate)); baseModeId, new RefreshRateRange(minRefreshRate, maxRefreshRate)); } } Loading Loading @@ -526,7 +526,7 @@ public class DisplayModeDirector { } /** * Information about the desired display mode to be set by the system. Includes the default * Information about the desired display mode to be set by the system. Includes the base * mode ID and refresh rate range. * * We have this class in addition to SurfaceControl.DesiredDisplayConfigSpecs to make clear the Loading @@ -535,10 +535,10 @@ public class DisplayModeDirector { */ public static final class DesiredDisplayModeSpecs { /** * Default mode ID. This is what system defaults to for all other settings, or * Base mode ID. This is what system defaults to for all other settings, or * if the refresh rate range is not available. */ public int defaultModeId; public int baseModeId; /** * The refresh rate range. */ Loading @@ -548,9 +548,8 @@ public class DisplayModeDirector { refreshRateRange = new RefreshRateRange(); } public DesiredDisplayModeSpecs( int defaultModeId, @NonNull RefreshRateRange refreshRateRange) { this.defaultModeId = defaultModeId; public DesiredDisplayModeSpecs(int baseModeId, @NonNull RefreshRateRange refreshRateRange) { this.baseModeId = baseModeId; this.refreshRateRange = refreshRateRange; } Loading @@ -559,7 +558,7 @@ public class DisplayModeDirector { */ @Override public String toString() { return String.format("defaultModeId=%d min=%.0f max=%.0f", defaultModeId, return String.format("baseModeId=%d min=%.0f max=%.0f", baseModeId, refreshRateRange.min, refreshRateRange.max); } /** Loading @@ -577,7 +576,7 @@ public class DisplayModeDirector { DesiredDisplayModeSpecs desiredDisplayModeSpecs = (DesiredDisplayModeSpecs) other; if (defaultModeId != desiredDisplayModeSpecs.defaultModeId) { if (baseModeId != desiredDisplayModeSpecs.baseModeId) { return false; } if (!refreshRateRange.equals(desiredDisplayModeSpecs.refreshRateRange)) { Loading @@ -588,14 +587,14 @@ public class DisplayModeDirector { @Override public int hashCode() { return Objects.hash(defaultModeId, refreshRateRange); return Objects.hash(baseModeId, refreshRateRange); } /** * Copy values from the other object. */ public void copyFrom(DesiredDisplayModeSpecs other) { defaultModeId = other.defaultModeId; baseModeId = other.baseModeId; refreshRateRange.min = other.refreshRateRange.min; refreshRateRange.max = other.refreshRateRange.max; } Loading
services/core/java/com/android/server/display/LocalDisplayAdapter.java +15 −16 Original line number Diff line number Diff line Loading @@ -272,14 +272,14 @@ final class LocalDisplayAdapter extends DisplayAdapter { // Check whether surface flinger spontaneously changed display config specs out from // under us. If so, schedule a traversal to reapply our display config specs. if (mDisplayModeSpecs.defaultModeId != 0) { int activeDefaultMode = if (mDisplayModeSpecs.baseModeId != 0) { int activeBaseMode = findMatchingModeIdLocked(physicalDisplayConfigSpecs.defaultConfig); // If we can't map the defaultConfig index to a mode, then the physical display // configs must have changed, and the code below for handling changes to the // list of available modes will take care of updating display config specs. if (activeDefaultMode != 0) { if (mDisplayModeSpecs.defaultModeId != activeDefaultMode if (activeBaseMode != 0) { if (mDisplayModeSpecs.baseModeId != activeBaseMode || mDisplayModeSpecs.refreshRateRange.min != physicalDisplayConfigSpecs.minRefreshRate || mDisplayModeSpecs.refreshRateRange.max Loading Loading @@ -312,14 +312,14 @@ final class LocalDisplayAdapter extends DisplayAdapter { mDefaultModeId = activeRecord.mMode.getModeId(); } // Determine whether the display mode specs' default mode is still there. if (mSupportedModes.indexOfKey(mDisplayModeSpecs.defaultModeId) < 0) { if (mDisplayModeSpecs.defaultModeId != 0) { // Determine whether the display mode specs' base mode is still there. if (mSupportedModes.indexOfKey(mDisplayModeSpecs.baseModeId) < 0) { if (mDisplayModeSpecs.baseModeId != 0) { Slog.w(TAG, "DisplayModeSpecs default mode no longer available, using currently" + " active mode as default."); "DisplayModeSpecs base mode no longer available, using currently" + " active mode."); } mDisplayModeSpecs.defaultModeId = activeRecord.mMode.getModeId(); mDisplayModeSpecs.baseModeId = activeRecord.mMode.getModeId(); mDisplayModeSpecsInvalid = true; } Loading Loading @@ -648,13 +648,13 @@ final class LocalDisplayAdapter extends DisplayAdapter { @Override public void setDesiredDisplayModeSpecsLocked( DisplayModeDirector.DesiredDisplayModeSpecs displayModeSpecs) { if (displayModeSpecs.defaultModeId == 0) { if (displayModeSpecs.baseModeId == 0) { // Bail if the caller is requesting a null mode. We'll get called again shortly with // a valid mode. return; } int defaultPhysIndex = findDisplayInfoIndexLocked(displayModeSpecs.defaultModeId); if (defaultPhysIndex < 0) { int basePhysIndex = findDisplayInfoIndexLocked(displayModeSpecs.baseModeId); if (basePhysIndex < 0) { // When a display is hotplugged, it's possible for a mode to be removed that was // previously valid. Because of the way display changes are propagated through the // framework, and the caching of the display mode specs in LogicalDisplay, it's Loading @@ -662,8 +662,7 @@ final class LocalDisplayAdapter extends DisplayAdapter { // mode. This should only happen in extremely rare cases. A followup call will // contain a valid mode id. Slog.w(TAG, "Ignoring request for invalid default mode id " + displayModeSpecs.defaultModeId); "Ignoring request for invalid base mode id " + displayModeSpecs.baseModeId); updateDeviceInfoLocked(); return; } Loading @@ -673,7 +672,7 @@ final class LocalDisplayAdapter extends DisplayAdapter { getHandler().sendMessage(PooledLambda.obtainMessage( LocalDisplayDevice::setDesiredDisplayModeSpecsAsync, this, getDisplayTokenLocked(), new SurfaceControl.DesiredDisplayConfigSpecs(defaultPhysIndex, new SurfaceControl.DesiredDisplayConfigSpecs(basePhysIndex, mDisplayModeSpecs.refreshRateRange.min, mDisplayModeSpecs.refreshRateRange.max))); } Loading
services/core/java/com/android/server/display/OverlayDisplayAdapter.java +1 −1 Original line number Diff line number Diff line Loading @@ -317,7 +317,7 @@ final class OverlayDisplayAdapter extends DisplayAdapter { @Override public void setDesiredDisplayModeSpecsLocked( DisplayModeDirector.DesiredDisplayModeSpecs displayModeSpecs) { final int id = displayModeSpecs.defaultModeId; final int id = displayModeSpecs.baseModeId; int index = -1; if (id == 0) { // Use the default. Loading
services/tests/servicestests/src/com/android/server/display/DisplayModeDirectorTest.java +3 −3 Original line number Diff line number Diff line Loading @@ -78,7 +78,7 @@ public class DisplayModeDirectorTest { int displayId = 0; // With no votes present, DisplayModeDirector should allow any refresh rate. assertEquals(new DisplayModeDirector.DesiredDisplayModeSpecs(/*defaultModeId=*/60, assertEquals(new DisplayModeDirector.DesiredDisplayModeSpecs(/*baseModeId=*/60, new DisplayModeDirector.RefreshRateRange(0f, Float.POSITIVE_INFINITY)), createDisplayModeDirectorWithDisplayFpsRange(60, 90).getDesiredDisplayModeSpecs( displayId)); Loading @@ -105,7 +105,7 @@ public class DisplayModeDirectorTest { director.injectVotesByDisplay(votesByDisplay); assertEquals( new DisplayModeDirector.DesiredDisplayModeSpecs( /*defaultModeId=*/minFps + i, /*baseModeId=*/minFps + i, new DisplayModeDirector.RefreshRateRange(minFps + i, maxFps - i)), director.getDesiredDisplayModeSpecs(displayId)); } Loading @@ -126,7 +126,7 @@ public class DisplayModeDirectorTest { votes.put(DisplayModeDirector.Vote.MIN_PRIORITY, DisplayModeDirector.Vote.forRefreshRates(70, 80)); director.injectVotesByDisplay(votesByDisplay); assertEquals(new DisplayModeDirector.DesiredDisplayModeSpecs(/*defaultModeId=*/70, assertEquals(new DisplayModeDirector.DesiredDisplayModeSpecs(/*baseModeId=*/70, new DisplayModeDirector.RefreshRateRange(70, 80)), director.getDesiredDisplayModeSpecs(displayId)); } Loading