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

Commit 7a0d2247 authored by Zhiyin Luo (罗植尹)'s avatar Zhiyin Luo (罗植尹) Committed by John Reck
Browse files

fix uninitialization issue in JankTracker

We should initialize mSwapDeadline in JankTracker, or it can be a very
large randomized value and then makes jank tracker not collect concrete
jank type of frames appropriately as expected.

Bug: 161656795
Test: run cts -m CtsIncidentHostTestCases -t
   com.android.server.cts.GraphicsStatsValidationTest#testJankyDrawFrame
Change-Id: I057a50a74502918619204f9164f6a954f8e9c5de
parent 22187fa9
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -139,6 +139,9 @@ void JankTracker::finishFrame(const FrameInfo& frame) {
        (*mGlobalData)->reportJank();
    }

    if (mSwapDeadline < 0) {
        mSwapDeadline = frame[FrameInfoIndex::IntendedVsync] + mFrameInterval;
    }
    bool isTripleBuffered = (mSwapDeadline - frame[FrameInfoIndex::IntendedVsync]) > (mFrameInterval * 0.1);

    mSwapDeadline = std::max(mSwapDeadline + mFrameInterval,
+1 −1
Original line number Diff line number Diff line
@@ -75,7 +75,7 @@ private:

    std::array<int64_t, NUM_BUCKETS> mThresholds;
    int64_t mFrameInterval;
    nsecs_t mSwapDeadline;
    nsecs_t mSwapDeadline = -1;
    // The amount of time we will erase from the total duration to account
    // for SF vsync offsets with HWC2 blocking dequeueBuffers.
    // (Vsync + mDequeueBlockTolerance) is the point at which we expect