|
27 | 27 | TRACE_EVENT0("flutter", "IOSExternalViewEmbedder::CancelFrame");
|
28 | 28 | FML_CHECK(platform_views_controller_);
|
29 | 29 | platform_views_controller_->CancelFrame();
|
| 30 | + [CATransaction commit]; |
30 | 31 | }
|
31 | 32 |
|
32 | 33 | // |ExternalViewEmbedder|
|
|
38 | 39 | TRACE_EVENT0("flutter", "IOSExternalViewEmbedder::BeginFrame");
|
39 | 40 | FML_CHECK(platform_views_controller_);
|
40 | 41 | platform_views_controller_->BeginFrame(frame_size);
|
| 42 | + [CATransaction begin]; |
41 | 43 | }
|
42 | 44 |
|
43 | 45 | // |ExternalViewEmbedder|
|
|
55 | 57 | TRACE_EVENT0("flutter", "IOSExternalViewEmbedder::PostPrerollAction");
|
56 | 58 | FML_CHECK(platform_views_controller_);
|
57 | 59 | PostPrerollResult result = platform_views_controller_->PostPrerollAction(raster_thread_merger);
|
| 60 | + if (result == PostPrerollResult::kSkipAndRetryFrame) { |
| 61 | + [CATransaction commit]; |
| 62 | + } |
58 | 63 | return result;
|
59 | 64 | }
|
60 | 65 |
|
|
76 | 81 | std::unique_ptr<SurfaceFrame> frame) {
|
77 | 82 | TRACE_EVENT0("flutter", "IOSExternalViewEmbedder::SubmitFrame");
|
78 | 83 | FML_CHECK(platform_views_controller_);
|
79 |
| - platform_views_controller_->SubmitFrame(std::move(context), ios_context_, std::move(frame)); |
| 84 | + bool submitted = platform_views_controller_->SubmitFrame(std::move(context), ios_context_, std::move(frame)); |
| 85 | + if (submitted) { |
| 86 | + [CATransaction commit]; |
| 87 | + } |
80 | 88 | TRACE_EVENT0("flutter", "IOSExternalViewEmbedder::DidSubmitFrame");
|
81 | 89 | }
|
82 | 90 |
|
|
0 commit comments