diff --git a/libs/hwui/JankTracker.cpp b/libs/hwui/JankTracker.cpp
index c5c2d15..4b0ddd2 100644
--- a/libs/hwui/JankTracker.cpp
+++ b/libs/hwui/JankTracker.cpp
@@ -206,7 +206,6 @@
         frame.set(FrameInfoIndex::FrameDeadline) = deadline;
     }
 
-    bool computeNextFrameStartUnstuffed = false;
     // If we hit the deadline, cool!
     if (frame[FrameInfoIndex::GpuCompleted] < deadline) {
         if (isTripleBuffered) {
@@ -214,8 +213,7 @@
             (*mGlobalData)->reportJankType(JankType::kHighInputLatency);
 
             // Buffer stuffing state gets carried over to next frame, unless there is a "pause"
-            // Instead of increase by frameInterval, recompute to catch up the drifting vsync
-            computeNextFrameStartUnstuffed = true;
+            mNextFrameStartUnstuffed += frameInterval;
         }
     } else {
         mData->reportJankType(JankType::kMissedDeadline);
@@ -224,7 +222,14 @@
         (*mGlobalData)->reportJank();
 
         // Janked, store the adjust deadline to detect triple buffering in next frame correctly.
-        computeNextFrameStartUnstuffed = true;
+        nsecs_t jitterNanos = frame[FrameInfoIndex::GpuCompleted]
+                - frame[FrameInfoIndex::Vsync];
+        nsecs_t lastFrameOffset = jitterNanos % frameInterval;
+
+        // Note the time when the next frame would start in an unstuffed situation. If it starts
+        // earlier, we are in a stuffed situation.
+        mNextFrameStartUnstuffed = frame[FrameInfoIndex::GpuCompleted]
+                - lastFrameOffset + frameInterval;
 
         recomputeThresholds(frameInterval);
         for (auto& comparison : COMPARISONS) {
@@ -249,16 +254,6 @@
         }
     }
 
-    if (computeNextFrameStartUnstuffed) {
-        nsecs_t jitterNanos = frame[FrameInfoIndex::GpuCompleted] - frame[FrameInfoIndex::Vsync];
-        nsecs_t lastFrameOffset = jitterNanos % frameInterval;
-
-        // Note the time when the next frame would start in an unstuffed situation. If it starts
-        // earlier, we are in a stuffed situation.
-        mNextFrameStartUnstuffed =
-                frame[FrameInfoIndex::GpuCompleted] - lastFrameOffset + frameInterval;
-    }
-
     int64_t totalGPUDrawTime = frame.gpuDrawTime();
     if (totalGPUDrawTime >= 0) {
         mData->reportGPUFrame(totalGPUDrawTime);
