Merge "Add check for empty vsync data in Choreographer." into tm-dev

This commit is contained in:
Rachel Lee
2022-04-25 18:03:56 +00:00
committed by Android (Google) Code Review

View File

@@ -765,18 +765,24 @@ public final class Choreographer {
startNanos = System.nanoTime(); startNanos = System.nanoTime();
final long jitterNanos = startNanos - frameTimeNanos; final long jitterNanos = startNanos - frameTimeNanos;
if (jitterNanos >= frameIntervalNanos) { if (jitterNanos >= frameIntervalNanos) {
final long lastFrameOffset = jitterNanos % frameIntervalNanos;
if (frameIntervalNanos == 0) {
Log.i(TAG, "Vsync data empty due to timeout");
} else {
final long skippedFrames = jitterNanos / frameIntervalNanos; final long skippedFrames = jitterNanos / frameIntervalNanos;
if (skippedFrames >= SKIPPED_FRAME_WARNING_LIMIT) { if (skippedFrames >= SKIPPED_FRAME_WARNING_LIMIT) {
Log.i(TAG, "Skipped " + skippedFrames + " frames! " Log.i(TAG, "Skipped " + skippedFrames + " frames! "
+ "The application may be doing too much work on its main thread."); + "The application may be doing too much work on its main "
+ "thread.");
} }
final long lastFrameOffset = jitterNanos % frameIntervalNanos;
if (DEBUG_JANK) { if (DEBUG_JANK) {
Log.d(TAG, "Missed vsync by " + (jitterNanos * 0.000001f) + " ms " Log.d(TAG, "Missed vsync by " + (jitterNanos * 0.000001f) + " ms "
+ "which is more than the frame interval of " + "which is more than the frame interval of "
+ (frameIntervalNanos * 0.000001f) + " ms! " + (frameIntervalNanos * 0.000001f) + " ms! "
+ "Skipping " + skippedFrames + " frames and setting frame " + "Skipping " + skippedFrames + " frames and setting frame "
+ "time to " + (lastFrameOffset * 0.000001f) + " ms in the past."); + "time to " + (lastFrameOffset * 0.000001f)
+ " ms in the past.");
}
} }
frameTimeNanos = startNanos - lastFrameOffset; frameTimeNanos = startNanos - lastFrameOffset;
DisplayEventReceiver.VsyncEventData latestVsyncEventData = DisplayEventReceiver.VsyncEventData latestVsyncEventData =