From 8aa54880dc4e5ae22602dcd2edfab063fa676fc0 Mon Sep 17 00:00:00 2001 From: fzyzcjy Date: Mon, 26 Sep 2022 10:56:07 +0800 Subject: [PATCH] try to further fix RecordVsync multi called #5835 --- shell/common/vsync_waiter.cc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/shell/common/vsync_waiter.cc b/shell/common/vsync_waiter.cc index 5f20581f893af..ec8031dfdd415 100644 --- a/shell/common/vsync_waiter.cc +++ b/shell/common/vsync_waiter.cc @@ -162,8 +162,6 @@ void VsyncWaiter::FireCallback(fml::TimePoint frame_start_time, // << task_runners_.GetRasterTaskRunner()->RunsTasksOnCurrentThread(); FML_DCHECK(fml::TimePoint::Now() >= frame_start_time); - LastVsyncInfo::Instance().RecordVsync(frame_start_time, frame_target_time); - Callback callback; std::vector secondary_callbacks; @@ -184,6 +182,10 @@ void VsyncWaiter::FireCallback(fml::TimePoint frame_start_time, return; } + // NOTE must be after "callback empty then return", b/c a flutter bug + // #5835 + LastVsyncInfo::Instance().RecordVsync(frame_start_time, frame_target_time); + // hack: schedule immediately to ensure [LastVsyncInfo] is updated every 16ms // in real implementation, will instead have real start/pause mechanism // instead of such blindly refresh