diff options
| -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. */ |