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

Commit 9b076756 authored by Jorim Jaggi's avatar Jorim Jaggi
Browse files

Correctly start tracing only where we are counting frames

Test: Take  trace, do CUJ
Bug: 185902609
Change-Id: I17db03d290d0c1ab82b7969888f1d7c06575b5d0
parent 9516605d
Loading
Loading
Loading
Loading
+16 −9
Original line number Diff line number Diff line
@@ -167,6 +167,7 @@ public class FrameTracker extends SurfaceControl.OnJankDataListener
                        if (mBeginVsyncId != INVALID_ID) {
                            mSurfaceControlWrapper.addJankStatsListener(
                                    FrameTracker.this, mSurfaceControl);
                            postTraceStartMarker();
                        }
                    }
                }
@@ -208,15 +209,9 @@ public class FrameTracker extends SurfaceControl.OnJankDataListener
    public synchronized void begin() {
        mBeginVsyncId = mChoreographer.getVsyncId() + 1;
        mSession.setTimeStamp(System.nanoTime());
        mChoreographer.mChoreographer.postCallback(Choreographer.CALLBACK_INPUT, () -> {
            synchronized (FrameTracker.this) {
                if (mCancelled || mEndVsyncId != INVALID_ID) {
                    return;
                }
                mTracingStarted = true;
                Trace.beginAsyncSection(mSession.getName(), (int) mBeginVsyncId);
        if (mSurfaceControl != null) {
            postTraceStartMarker();
        }
        }, null);
        mRendererWrapper.addObserver(mObserver);
        if (DEBUG) {
            Log.d(TAG, "begin: " + mSession.getName() + ", begin=" + mBeginVsyncId);
@@ -229,6 +224,18 @@ public class FrameTracker extends SurfaceControl.OnJankDataListener
        }
    }

    private void postTraceStartMarker() {
        mChoreographer.mChoreographer.postCallback(Choreographer.CALLBACK_INPUT, () -> {
            synchronized (FrameTracker.this) {
                if (mCancelled || mEndVsyncId != INVALID_ID) {
                    return;
                }
                mTracingStarted = true;
                Trace.beginAsyncSection(mSession.getName(), (int) mBeginVsyncId);
            }
        }, null);
    }

    /**
     * End the trace session of the CUJ.
     */