Loading core/java/com/android/internal/jank/FrameTracker.java +55 −35 Original line number Diff line number Diff line Loading @@ -253,6 +253,7 @@ public class FrameTracker implements HardwareRendererObserver.OnFrameMetricsAvai mSurfaceChangedCallback = new ViewRootImpl.SurfaceChangedCallback() { @Override public void surfaceCreated(SurfaceControl.Transaction t) { Trace.beginSection("FrameTracker#surfaceCreated"); mHandler.runWithScissors(() -> { if (mSurfaceControl == null) { mSurfaceControl = mViewRoot.getSurfaceControl(); Loading @@ -262,6 +263,7 @@ public class FrameTracker implements HardwareRendererObserver.OnFrameMetricsAvai } } }, EXECUTOR_TASK_TIMEOUT); Trace.endSection(); } @Override Loading Loading @@ -464,6 +466,8 @@ public class FrameTracker implements HardwareRendererObserver.OnFrameMetricsAvai @Override public void onJankDataAvailable(SurfaceControl.JankData[] jankData) { postCallback(() -> { try { Trace.beginSection("FrameTracker#onJankDataAvailable"); if (mCancelled || mMetricsFinalized) { return; } Loading @@ -481,6 +485,9 @@ public class FrameTracker implements HardwareRendererObserver.OnFrameMetricsAvai } } processJankInfos(); } finally { Trace.endSection(); } }); } Loading @@ -507,6 +514,8 @@ public class FrameTracker implements HardwareRendererObserver.OnFrameMetricsAvai @Override public void onFrameMetricsAvailable(int dropCountSinceLastInvocation) { postCallback(() -> { try { Trace.beginSection("FrameTracker#onFrameMetricsAvailable"); if (mCancelled || mMetricsFinalized) { return; } Loading @@ -515,7 +524,8 @@ public class FrameTracker implements HardwareRendererObserver.OnFrameMetricsAvai // We should keep tracking the begin / end timestamp that we can compare with // vsync timestamp to check if the frame is in the duration of the CUJ. long totalDurationNanos = mMetricsWrapper.getMetric(FrameMetrics.TOTAL_DURATION); boolean isFirstFrame = mMetricsWrapper.getMetric(FrameMetrics.FIRST_DRAW_FRAME) == 1; boolean isFirstFrame = mMetricsWrapper.getMetric(FrameMetrics.FIRST_DRAW_FRAME) == 1; long frameVsyncId = mMetricsWrapper.getTiming()[FrameMetrics.Index.FRAME_TIMELINE_VSYNC_ID]; Loading @@ -530,6 +540,9 @@ public class FrameTracker implements HardwareRendererObserver.OnFrameMetricsAvai frameVsyncId, totalDurationNanos, isFirstFrame)); } processJankInfos(); } finally { Trace.endSection(); } }); } Loading Loading @@ -575,6 +588,13 @@ public class FrameTracker implements HardwareRendererObserver.OnFrameMetricsAvai @UiThread private void finish() { Trace.beginSection("FrameTracker#finish"); finishTraced(); Trace.endSection(); } @UiThread private void finishTraced() { if (mMetricsFinalized || mCancelled) return; mMetricsFinalized = true; Loading Loading
core/java/com/android/internal/jank/FrameTracker.java +55 −35 Original line number Diff line number Diff line Loading @@ -253,6 +253,7 @@ public class FrameTracker implements HardwareRendererObserver.OnFrameMetricsAvai mSurfaceChangedCallback = new ViewRootImpl.SurfaceChangedCallback() { @Override public void surfaceCreated(SurfaceControl.Transaction t) { Trace.beginSection("FrameTracker#surfaceCreated"); mHandler.runWithScissors(() -> { if (mSurfaceControl == null) { mSurfaceControl = mViewRoot.getSurfaceControl(); Loading @@ -262,6 +263,7 @@ public class FrameTracker implements HardwareRendererObserver.OnFrameMetricsAvai } } }, EXECUTOR_TASK_TIMEOUT); Trace.endSection(); } @Override Loading Loading @@ -464,6 +466,8 @@ public class FrameTracker implements HardwareRendererObserver.OnFrameMetricsAvai @Override public void onJankDataAvailable(SurfaceControl.JankData[] jankData) { postCallback(() -> { try { Trace.beginSection("FrameTracker#onJankDataAvailable"); if (mCancelled || mMetricsFinalized) { return; } Loading @@ -481,6 +485,9 @@ public class FrameTracker implements HardwareRendererObserver.OnFrameMetricsAvai } } processJankInfos(); } finally { Trace.endSection(); } }); } Loading @@ -507,6 +514,8 @@ public class FrameTracker implements HardwareRendererObserver.OnFrameMetricsAvai @Override public void onFrameMetricsAvailable(int dropCountSinceLastInvocation) { postCallback(() -> { try { Trace.beginSection("FrameTracker#onFrameMetricsAvailable"); if (mCancelled || mMetricsFinalized) { return; } Loading @@ -515,7 +524,8 @@ public class FrameTracker implements HardwareRendererObserver.OnFrameMetricsAvai // We should keep tracking the begin / end timestamp that we can compare with // vsync timestamp to check if the frame is in the duration of the CUJ. long totalDurationNanos = mMetricsWrapper.getMetric(FrameMetrics.TOTAL_DURATION); boolean isFirstFrame = mMetricsWrapper.getMetric(FrameMetrics.FIRST_DRAW_FRAME) == 1; boolean isFirstFrame = mMetricsWrapper.getMetric(FrameMetrics.FIRST_DRAW_FRAME) == 1; long frameVsyncId = mMetricsWrapper.getTiming()[FrameMetrics.Index.FRAME_TIMELINE_VSYNC_ID]; Loading @@ -530,6 +540,9 @@ public class FrameTracker implements HardwareRendererObserver.OnFrameMetricsAvai frameVsyncId, totalDurationNanos, isFirstFrame)); } processJankInfos(); } finally { Trace.endSection(); } }); } Loading Loading @@ -575,6 +588,13 @@ public class FrameTracker implements HardwareRendererObserver.OnFrameMetricsAvai @UiThread private void finish() { Trace.beginSection("FrameTracker#finish"); finishTraced(); Trace.endSection(); } @UiThread private void finishTraced() { if (mMetricsFinalized || mCancelled) return; mMetricsFinalized = true; Loading