From 9b0767564eeb1ea691daa6c900bbb41556a50dbe Mon Sep 17 00:00:00 2001 From: Jorim Jaggi Date: Mon, 3 May 2021 15:51:22 +0200 Subject: [PATCH] Correctly start tracing only where we are counting frames Test: Take trace, do CUJ Bug: 185902609 Change-Id: I17db03d290d0c1ab82b7969888f1d7c06575b5d0 --- .../android/internal/jank/FrameTracker.java | 25 ++++++++++++------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/core/java/com/android/internal/jank/FrameTracker.java b/core/java/com/android/internal/jank/FrameTracker.java index 4d3f7745decff..4d5b90a9ccbfd 100644 --- a/core/java/com/android/internal/jank/FrameTracker.java +++ b/core/java/com/android/internal/jank/FrameTracker.java @@ -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); - } - }, null); + if (mSurfaceControl != null) { + postTraceStartMarker(); + } 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. */