SF: Use last commited vsync for the next vsync callback

Divides the vsync into lastVsync and committedVsync.
nextAnticipatedVsyncTimeFrom uses the committedVsync
for the lastVsyncOpt and avoids adjusting from the already adjusted
pendingCallbackVsyncTime when jank happens and timelines are adjusted.

BUG: 355049193
Test: atest libsurfaceflinger_unittest
Flag: EXEMPT bugfix
Change-Id: If246174be965ac70197d19af588c5cf5c4bdfccf
diff --git a/services/surfaceflinger/Scheduler/EventThread.h b/services/surfaceflinger/Scheduler/EventThread.h
index f772126..bbe4f9d 100644
--- a/services/surfaceflinger/Scheduler/EventThread.h
+++ b/services/surfaceflinger/Scheduler/EventThread.h
@@ -220,6 +220,7 @@
     std::chrono::nanoseconds mReadyDuration GUARDED_BY(mMutex);
     std::shared_ptr<scheduler::VsyncSchedule> mVsyncSchedule GUARDED_BY(mMutex);
     TimePoint mLastVsyncCallbackTime GUARDED_BY(mMutex) = TimePoint::now();
+    TimePoint mLastCommittedVsyncTime GUARDED_BY(mMutex) = TimePoint::now();
     scheduler::VSyncCallbackRegistration mVsyncRegistration GUARDED_BY(mMutex);
     frametimeline::TokenManager* const mTokenManager;