diff options
| author | 2021-05-03 15:51:22 +0200 | |
|---|---|---|
| committer | 2021-05-03 15:51:22 +0200 | |
| commit | 9b0767564eeb1ea691daa6c900bbb41556a50dbe (patch) | |
| tree | 2b0fa408e580a0009790e862f3f0db5200cc1347 | |
| parent | 9516605d632adb8bce4f9163fb3c247be7c4a1b0 (diff) | |
Correctly start tracing only where we are counting frames
Test: Take trace, do CUJ
Bug: 185902609
Change-Id: I17db03d290d0c1ab82b7969888f1d7c06575b5d0
| -rw-r--r-- | core/java/com/android/internal/jank/FrameTracker.java | 25 |
1 files 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 4d3f7745decf..4d5b90a9ccbf 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. */ |