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

Commit c99f2421 authored by Jian-Syuan (Shane) Wong's avatar Jian-Syuan (Shane) Wong Committed by Android (Google) Code Review
Browse files

Merge "[VRR] Move refresh rate aggregation from invalidate to after onDraw" into main

parents 8a02d1d0 bad67403
Loading
Loading
Loading
Loading
+6 −6
Original line number Diff line number Diff line
@@ -23705,12 +23705,6 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
                    mPrivateFlags |= PFLAG_DRAWN | PFLAG_DRAWING_CACHE_VALID;
                    mPrivateFlags &= ~PFLAG_DIRTY_MASK;
                    // // For VRR to vote the preferred frame rate
                    if (sToolkitSetFrameRateReadOnlyFlagValue
                            && sToolkitFrameRateViewEnablingReadOnlyFlagValue) {
                        votePreferredFrameRate();
                    }
                    mPrivateFlags4 |= PFLAG4_HAS_DRAWN;
                    // Fast path for layouts with no backgrounds
@@ -23727,6 +23721,12 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
                        draw(canvas);
                    }
                }
                // For VRR to vote the preferred frame rate
                if (sToolkitSetFrameRateReadOnlyFlagValue
                        && sToolkitFrameRateViewEnablingReadOnlyFlagValue) {
                    votePreferredFrameRate();
                }
            } finally {
                renderNode.endRecording();
                setDisplayListProperties(renderNode);
+25 −0
Original line number Diff line number Diff line
@@ -1286,6 +1286,31 @@ public class ViewRootImplTest {
        waitForAfterDraw();
    }

    @Test
    @RequiresFlagsEnabled(FLAG_TOOLKIT_FRAME_RATE_VIEW_ENABLING_READ_ONLY)
    public void votePreferredFrameRate_velocityVotedAfterOnDraw() throws Throwable {
        mView = new View(sContext);
        double delta = 0.1;
        float pixelsPerSecond = 1000_000;
        float expectedFrameRate = 120;
        attachViewToWindow(mView);
        sInstrumentation.waitForIdleSync();
        ViewRootImpl viewRoot = mView.getViewRootImpl();
        waitForFrameRateCategoryToSettle(mView);

        sInstrumentation.runOnMainSync(() -> {
            mView.setFrameContentVelocity(pixelsPerSecond);
            mView.invalidate();
            assertEquals(0, viewRoot.getPreferredFrameRate(), delta);
            assertEquals(0, viewRoot.getLastPreferredFrameRate(), delta);
            runAfterDraw(() -> {
                assertEquals(expectedFrameRate, viewRoot.getPreferredFrameRate(), delta);
                assertEquals(expectedFrameRate, viewRoot.getLastPreferredFrameRate(), delta);
            });
        });
        waitForAfterDraw();
    }

    @Test
    public void forceInvertOffDarkThemeOff_forceDarkModeDisabled() {
        mSetFlagsRule.enableFlags(FLAG_FORCE_INVERT_COLOR);