Skip to content

Commit 375ce5e

Browse files
committed
Revert "Start animator paused (flutter#29007)"
This reverts commit 666994f.
1 parent 5c16f37 commit 375ce5e

3 files changed

Lines changed: 18 additions & 17 deletions

File tree

shell/common/animator.cc

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -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

95101
void 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

179185
void 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

279281
void Animator::ScheduleSecondaryVsyncCallback(uintptr_t id,

shell/common/animator.h

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -106,18 +106,17 @@ class Animator final {
106106

107107
std::unique_ptr<FrameTimingsRecorder> frame_timings_recorder_;
108108
uint64_t frame_request_number_ = 1;
109-
fml::TimePoint dart_frame_deadline_;
109+
int64_t dart_frame_deadline_;
110110
std::shared_ptr<LayerTreePipeline> layer_tree_pipeline_;
111111
fml::Semaphore pending_frame_semaphore_;
112112
LayerTreePipeline::ProducerContinuation producer_continuation_;
113-
bool paused_ = true;
114-
bool regenerate_layer_tree_ = false;
115-
bool frame_scheduled_ = false;
116-
int notify_idle_task_id_ = 0;
117-
bool dimension_change_pending_ = false;
113+
bool paused_;
114+
bool regenerate_layer_tree_;
115+
bool frame_scheduled_;
116+
int notify_idle_task_id_;
117+
bool dimension_change_pending_;
118118
SkISize last_layer_tree_size_ = {0, 0};
119119
std::deque<uint64_t> trace_flow_ids_;
120-
bool has_rendered_ = false;
121120

122121
fml::WeakPtrFactory<Animator> weak_factory_;
123122

shell/common/engine.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -263,6 +263,7 @@ tonic::DartErrorHandleType Engine::GetUIIsolateLastError() {
263263

264264
void Engine::OnOutputSurfaceCreated() {
265265
have_surface_ = true;
266+
StartAnimatorIfPossible();
266267
ScheduleFrame();
267268
}
268269

@@ -462,7 +463,6 @@ std::string Engine::DefaultRouteName() {
462463
}
463464

464465
void Engine::ScheduleFrame(bool regenerate_layer_tree) {
465-
StartAnimatorIfPossible();
466466
animator_->RequestFrame(regenerate_layer_tree);
467467
}
468468

0 commit comments

Comments
 (0)