Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f2cf6628 authored by petsjonkin's avatar petsjonkin Committed by Oleg Petšjonkin
Browse files

Synthetic modes are respected when returning default refresh rates

For VRR panels defaultRefreshRates will include refresh rates from synthetic modes
This will allow RefreshRatePolicy properly set minSupportedRefreshRate for VRR displays

Flag: EXEMPT bugfix
Bug: b/340999835
Test: atest RefreshRatePolicyTest, manual testing
Change-Id: I64e40a7a7e1cbb441c7041fbcb07ea7d5350694b
parent 7c329321
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -708,7 +708,7 @@ public final class DisplayInfo implements Parcelable {
     */
    @Nullable
    public Display.Mode findDefaultModeByRefreshRate(float refreshRate) {
        Display.Mode[] modes = supportedModes;
        Display.Mode[] modes = appsSupportedModes;
        Display.Mode defaultMode = getDefaultMode();
        for (int i = 0; i < modes.length; i++) {
            if (modes[i].matches(
@@ -723,7 +723,7 @@ public final class DisplayInfo implements Parcelable {
     * Returns the list of supported refresh rates in the default mode.
     */
    public float[] getDefaultRefreshRates() {
        Display.Mode[] modes = supportedModes;
        Display.Mode[] modes = appsSupportedModes;
        ArraySet<Float> rates = new ArraySet<>();
        Display.Mode defaultMode = getDefaultMode();
        for (int i = 0; i < modes.length; i++) {
+9 −6
Original line number Diff line number Diff line
@@ -82,12 +82,15 @@ public class FrameRateSelectionPriorityTests extends WindowTestsBase {
    public void setUp() {
        DisplayInfo di = new DisplayInfo(mDisplayInfo);
        Mode defaultMode = di.getDefaultMode();
        di.supportedModes = new Mode[] {
                new Mode(1, defaultMode.getPhysicalWidth(), defaultMode.getPhysicalHeight(), 90),
                new Mode(2, defaultMode.getPhysicalWidth(), defaultMode.getPhysicalHeight(), 70),
                new Mode(LOW_MODE_ID,
                        defaultMode.getPhysicalWidth(), defaultMode.getPhysicalHeight(), 60),
        };
        Mode hiMode = new Mode(1,
                defaultMode.getPhysicalWidth(), defaultMode.getPhysicalHeight(), 90);
        Mode midMode = new Mode(2,
                defaultMode.getPhysicalWidth(), defaultMode.getPhysicalHeight(), 70);
        Mode lowMode = new Mode(LOW_MODE_ID,
                defaultMode.getPhysicalWidth(), defaultMode.getPhysicalHeight(), 60);

        di.supportedModes = new Mode[] { hiMode, midMode };
        di.appsSupportedModes = new Mode[] { hiMode, midMode, lowMode };
        di.defaultModeId = 1;
        mRefreshRatePolicy = new RefreshRatePolicy(mWm, di, mDenylist);
        when(mDisplayPolicy.getRefreshRatePolicy()).thenReturn(mRefreshRatePolicy);
+8 −13
Original line number Diff line number Diff line
@@ -66,7 +66,6 @@ public class RefreshRatePolicyTest extends WindowTestsBase {

    private RefreshRatePolicy mPolicy;
    private HighRefreshRateDenylist mDenylist = mock(HighRefreshRateDenylist.class);
    private FrameRateVote mTempFrameRateVote = new FrameRateVote();

    private static final FrameRateVote FRAME_RATE_VOTE_NONE = new FrameRateVote();
    private static final FrameRateVote FRAME_RATE_VOTE_DENY_LIST =
@@ -98,18 +97,14 @@ public class RefreshRatePolicyTest extends WindowTestsBase {
    @Before
    public void setUp() {
        Mode defaultMode = mDisplayInfo.getDefaultMode();
        mDisplayInfo.supportedModes = new Mode[] {
                new Mode(HI_MODE_ID,
                        defaultMode.getPhysicalWidth(), defaultMode.getPhysicalHeight(),
                        HI_REFRESH_RATE),
                new Mode(MID_MODE_ID,
                        defaultMode.getPhysicalWidth(), defaultMode.getPhysicalHeight(),
                        MID_REFRESH_RATE),
                new Mode(LOW_MODE_ID,
                        defaultMode.getPhysicalWidth(), defaultMode.getPhysicalHeight(),
                        LOW_REFRESH_RATE),
        };
        mDisplayInfo.appsSupportedModes = mDisplayInfo.supportedModes;
        Mode hiMode = new Mode(HI_MODE_ID,
                defaultMode.getPhysicalWidth(), defaultMode.getPhysicalHeight(), HI_REFRESH_RATE);
        Mode midMode = new Mode(MID_MODE_ID,
                defaultMode.getPhysicalWidth(), defaultMode.getPhysicalHeight(), MID_REFRESH_RATE);
        Mode lowMode = new Mode(LOW_MODE_ID,
                defaultMode.getPhysicalWidth(), defaultMode.getPhysicalHeight(), LOW_REFRESH_RATE);
        mDisplayInfo.supportedModes = new Mode[] { hiMode, midMode };
        mDisplayInfo.appsSupportedModes = new Mode[] { hiMode, midMode, lowMode };
        mDisplayInfo.defaultModeId = HI_MODE_ID;
        mPolicy = new RefreshRatePolicy(mWm, mDisplayInfo, mDenylist);
    }