|
5 | 5 | #include "flutter/shell/common/animator.h" |
6 | 6 |
|
7 | 7 | #include "flutter/flow/frame_timings.h" |
8 | | -#include "flutter/fml/backtrace.h" |
9 | 8 | #include "flutter/fml/time/time_point.h" |
10 | 9 | #include "flutter/fml/trace_event.h" |
11 | 10 | #include "third_party/dart/runtime/include/dart_tools_api.h" |
@@ -80,7 +79,6 @@ void Animator::BeginFrame( |
80 | 79 | frame_request_number_); |
81 | 80 | frame_request_number_++; |
82 | 81 |
|
83 | | - FML_DLOG(INFO) << "hi Animator::BeginFrame set frame_timings_recorder_"; |
84 | 82 | frame_timings_recorder_ = std::move(frame_timings_recorder); |
85 | 83 | frame_timings_recorder_->RecordBuildStart(fml::TimePoint::Now()); |
86 | 84 |
|
@@ -172,7 +170,6 @@ void Animator::Render(std::shared_ptr<flutter::LayerTree> layer_tree) { |
172 | 170 | last_layer_tree_size_ = layer_tree->frame_size(); |
173 | 171 |
|
174 | 172 | if (!frame_timings_recorder_) { |
175 | | - FML_DLOG(INFO) << "hi Animator::Render set frame_timings_recorder_"; |
176 | 173 | // Framework can directly call render with a built scene. |
177 | 174 | frame_timings_recorder_ = std::make_unique<FrameTimingsRecorder>(); |
178 | 175 | const fml::TimePoint placeholder_time = fml::TimePoint::Now(); |
@@ -201,7 +198,6 @@ void Animator::Render(std::shared_ptr<flutter::LayerTree> layer_tree) { |
201 | 198 | FML_DLOG(INFO) << "hi Animator::Render call producer_continuation_.Complete" |
202 | 199 | << " produce producer_continuation_=" |
203 | 200 | << static_cast<bool>(producer_continuation_); |
204 | | - FML_DLOG(INFO) << "hi Animator::Render remove frame_timings_recorder_"; |
205 | 201 | auto layer_tree_item = std::make_unique<LayerTreeItem>( |
206 | 202 | std::move(layer_tree), std::move(frame_timings_recorder_)); |
207 | 203 | // Commit the pending continuation. |
@@ -290,62 +286,25 @@ void Animator::RequestFrame(bool regenerate_layer_tree) { |
290 | 286 |
|
291 | 287 | void Animator::AwaitVSync() { |
292 | 288 | FML_DLOG(INFO) << "hi Animator::AwaitVSync start"; |
293 | | - |
294 | | - // #5982 |
295 | | - const LastVsyncInfo& lastVsyncInfo = LastVsyncInfo::Instance(); |
296 | | - // to do: use one lock, currently two reads use two lockings. |
297 | | - auto frame_start_time = lastVsyncInfo.GetVsyncStartTime(); |
298 | | - auto frame_target_time = lastVsyncInfo.GetVsyncTargetTime(); |
299 | | - |
300 | | - bool curr_vsync_has_already_called_begin_frame = |
301 | | - frame_timings_recorder_ && |
302 | | - frame_timings_recorder_->GetVsyncTargetTime() == frame_target_time; |
303 | | - FML_DLOG(INFO) |
304 | | - << "hi Animator::AwaitVSync curr_vsync_has_already_called_begin_frame=" |
305 | | - << curr_vsync_has_already_called_begin_frame << " frame_target_time=" |
306 | | - << frame_target_time.ToEpochDelta().ToMicroseconds() |
307 | | - << " frame_timings_recorder_->GetVsyncTargetTime=" |
308 | | - << (frame_timings_recorder_ |
309 | | - ? frame_timings_recorder_->GetVsyncTargetTime() |
310 | | - .ToEpochDelta() |
311 | | - .ToMicroseconds() |
312 | | - : -1) |
313 | | - << " backtrace=" << fml::BacktraceHere(); |
314 | | - |
315 | | - // NotRespectVsync, see #5982 |
316 | | - if (curr_vsync_has_already_called_begin_frame) { |
317 | | - waiter_ |
318 | | - ->AsyncWaitForVsync( |
319 | | - [self = weak_factory_.GetWeakPtr()]( |
320 | | - std::unique_ptr<FrameTimingsRecorder> frame_timings_recorder) { |
321 | | - FML_DLOG(INFO) |
322 | | - << "hi Animator::AwaitVSync AsyncWaitForVsync callback start"; |
323 | | - if (self) { |
324 | | - if (self->CanReuseLastLayerTree()) { |
325 | | - FML_DLOG(INFO) << "hi Animator::AwaitVSync AsyncWaitForVsync " |
326 | | - "callback call DrawLastLayerTree"; |
327 | | - self->DrawLastLayerTree(std::move(frame_timings_recorder)); |
328 | | - } else { |
329 | | - FML_DLOG(INFO) << "hi Animator::AwaitVSync AsyncWaitForVsync " |
330 | | - "callback call BeginFrame"; |
331 | | - self->BeginFrame(std::move(frame_timings_recorder)); |
332 | | - } |
333 | | - } |
334 | | - FML_DLOG(INFO) |
335 | | - << "hi Animator::AwaitVSync AsyncWaitForVsync callback end"; |
336 | | - }); |
337 | | - } else { |
338 | | - FML_DLOG(INFO) << "hi Animator::AwaitVSync directly call BeginFrame"; |
339 | | - |
340 | | - // ref: vsync_waiter.cc |
341 | | - std::unique_ptr<FrameTimingsRecorder> frame_timings_recorder = |
342 | | - std::make_unique<FrameTimingsRecorder>(); |
343 | | - frame_timings_recorder->RecordVsync(frame_start_time, frame_target_time); |
344 | | - |
345 | | - // hack: not consider `CanReuseLastLayerTree` yet |
346 | | - BeginFrame(std::move(frame_timings_recorder)); |
347 | | - } |
348 | | - |
| 289 | + waiter_->AsyncWaitForVsync( |
| 290 | + [self = weak_factory_.GetWeakPtr()]( |
| 291 | + std::unique_ptr<FrameTimingsRecorder> frame_timings_recorder) { |
| 292 | + FML_DLOG(INFO) |
| 293 | + << "hi Animator::AwaitVSync AsyncWaitForVsync callback start"; |
| 294 | + if (self) { |
| 295 | + if (self->CanReuseLastLayerTree()) { |
| 296 | + FML_DLOG(INFO) << "hi Animator::AwaitVSync AsyncWaitForVsync " |
| 297 | + "callback call DrawLastLayerTree"; |
| 298 | + self->DrawLastLayerTree(std::move(frame_timings_recorder)); |
| 299 | + } else { |
| 300 | + FML_DLOG(INFO) << "hi Animator::AwaitVSync AsyncWaitForVsync " |
| 301 | + "callback call BeginFrame"; |
| 302 | + self->BeginFrame(std::move(frame_timings_recorder)); |
| 303 | + } |
| 304 | + } |
| 305 | + FML_DLOG(INFO) |
| 306 | + << "hi Animator::AwaitVSync AsyncWaitForVsync callback end"; |
| 307 | + }); |
349 | 308 | if (has_rendered_) { |
350 | 309 | delegate_.OnAnimatorNotifyIdle(dart_frame_deadline_); |
351 | 310 | } |
|
0 commit comments