summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/com/android/internal/jank/FrameTracker.java25
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.
*/