@@ -27,6 +27,7 @@ Animator::Animator(Delegate& delegate,
2727 : delegate_(delegate),
2828 task_runners_ (std::move(task_runners)),
2929 waiter_(std::move(waiter)),
30+ dart_frame_deadline_(0 ),
3031#if SHELL_ENABLE_METAL
3132 layer_tree_pipeline_ (std::make_shared<LayerTreePipeline>(2 )),
3233#else // SHELL_ENABLE_METAL
@@ -40,6 +41,11 @@ Animator::Animator(Delegate& delegate,
4041 : 2)),
4142#endif // SHELL_ENABLE_METAL
4243 pending_frame_semaphore_ (1 ),
44+ paused_(false ),
45+ regenerate_layer_tree_(false ),
46+ frame_scheduled_(false ),
47+ notify_idle_task_id_(0 ),
48+ dimension_change_pending_(false ),
4349 weak_factory_(this ) {
4450}
4551
@@ -86,10 +92,10 @@ const char* Animator::FrameParity() {
8692 return (frame_number % 2 ) ? " even" : " odd" ;
8793}
8894
89- static fml::TimePoint FxlToDartOrEarlier (fml::TimePoint time) {
90- auto dart_now = fml::TimeDelta::FromMicroseconds ( Dart_TimelineGetMicros () );
95+ static int64_t FxlToDartOrEarlier (fml::TimePoint time) {
96+ int64_t dart_now = Dart_TimelineGetMicros ();
9197 fml::TimePoint fxl_now = fml::TimePoint::Now ();
92- return fml::TimePoint::FromEpochDelta (time - fxl_now + dart_now) ;
98+ return (time - fxl_now). ToMicroseconds () + dart_now;
9399}
94100
95101void Animator::BeginFrame (
@@ -147,7 +153,7 @@ void Animator::BeginFrame(
147153 delegate_.OnAnimatorBeginFrame (frame_target_time, frame_number);
148154 }
149155
150- if (!frame_scheduled_ && has_rendered_ ) {
156+ if (!frame_scheduled_) {
151157 // Under certain workloads (such as our parent view resizing us, which is
152158 // communicated to us by repeat viewport metrics events), we won't
153159 // actually have a frame scheduled yet, despite the fact that we *will* be
@@ -177,7 +183,6 @@ void Animator::BeginFrame(
177183}
178184
179185void Animator::Render (std::unique_ptr<flutter::LayerTree> layer_tree) {
180- has_rendered_ = true ;
181186 if (dimension_change_pending_ &&
182187 layer_tree->frame_size () != last_layer_tree_size_) {
183188 dimension_change_pending_ = false ;
@@ -270,10 +275,7 @@ void Animator::AwaitVSync() {
270275 }
271276 });
272277
273- if (has_rendered_) {
274- delegate_.OnAnimatorNotifyIdle (
275- dart_frame_deadline_.ToEpochDelta ().ToMicroseconds ());
276- }
278+ delegate_.OnAnimatorNotifyIdle (dart_frame_deadline_);
277279}
278280
279281void Animator::ScheduleSecondaryVsyncCallback (uintptr_t id,
0 commit comments