@@ -133,25 +133,45 @@ Engine::Engine(Delegate& delegate,
133133 // thread. We also need to wait for the external view embedder to be set up
134134 // before creating the shell.
135135 fml::AutoResetWaitableEvent view_embedder_latch;
136- task_runners.GetRasterTaskRunner ()->PostTask (fml::MakeCopyable (
137- [this , session = std::move (session),
138- session_error_callback = std::move (session_error_callback),
139- view_token = std::move (view_token),
140- view_ref_pair = std::move (view_ref_pair),
141- max_frames_in_flight = product_config.get_max_frames_in_flight (),
142- &view_embedder_latch,
143- vsync_offset = product_config.get_vsync_offset ()]() mutable {
144- session_connection_ = std::make_shared<DefaultSessionConnection>(
145- thread_label_, std::move (session),
146- std::move (session_error_callback), [](auto ) {},
147- max_frames_in_flight, vsync_offset);
148- surface_producer_.emplace (session_connection_->get ());
149- external_view_embedder_ = std::make_shared<FuchsiaExternalViewEmbedder>(
150- thread_label_, std::move (view_token), std::move (view_ref_pair),
151- *session_connection_.get (), surface_producer_.value (),
152- intercept_all_input_);
153- view_embedder_latch.Signal ();
154- }));
136+ if (product_config.use_flatland ()) {
137+ task_runners.GetRasterTaskRunner ()->PostTask (fml::MakeCopyable (
138+ [this , session_error_callback = std::move (session_error_callback),
139+ view_token = std::move (view_token),
140+ view_ref_pair = std::move (view_ref_pair),
141+ max_frames_in_flight = product_config.get_max_frames_in_flight (),
142+ &view_embedder_latch,
143+ vsync_offset = product_config.get_vsync_offset ()]() mutable {
144+ flatland_connection_ = std::make_shared<FlatlandConnection>(
145+ thread_label_, std::move (session_error_callback), [](auto ) {},
146+ max_frames_in_flight, vsync_offset);
147+ flatland_view_embedder_ =
148+ std::make_shared<FlatlandExternalViewEmbedder>(
149+ thread_label_, std::move (view_token),
150+ std::move (view_ref_pair), *flatland_connection_.get (),
151+ surface_producer_.value (), intercept_all_input_);
152+ view_embedder_latch.Signal ();
153+ }));
154+ } else {
155+ task_runners.GetRasterTaskRunner ()->PostTask (fml::MakeCopyable (
156+ [this , session = std::move (session),
157+ session_error_callback = std::move (session_error_callback),
158+ view_token = std::move (view_token),
159+ view_ref_pair = std::move (view_ref_pair),
160+ max_frames_in_flight = product_config.get_max_frames_in_flight (),
161+ &view_embedder_latch,
162+ vsync_offset = product_config.get_vsync_offset ()]() mutable {
163+ gfx_connection_ = std::make_shared<GfxConnection>(
164+ thread_label_, std::move (session),
165+ std::move (session_error_callback), [](auto ) {},
166+ max_frames_in_flight, vsync_offset);
167+ surface_producer_.emplace (gfx_connection_->get ());
168+ gfx_view_embedder_ = std::make_shared<GfxExternalViewEmbedder>(
169+ thread_label_, std::move (view_token), std::move (view_ref_pair),
170+ *gfx_connection_.get (), surface_producer_.value (),
171+ intercept_all_input_);
172+ view_embedder_latch.Signal ();
173+ }));
174+ }
155175 view_embedder_latch.Wait ();
156176
157177 // Grab the parent environment services. The platform view may want to
@@ -279,11 +299,11 @@ Engine::Engine(Delegate& delegate,
279299 keyboard_listener_request = std::move (keyboard_listener_request),
280300 await_vsync_callback =
281301 [this ](FireCallbackCallback cb) {
282- session_connection_ ->AwaitVsync (cb);
302+ gfx_connection_ ->AwaitVsync (cb);
283303 },
284304 await_vsync_for_secondary_callback_callback =
285305 [this ](FireCallbackCallback cb) {
286- session_connection_ ->AwaitVsyncForSecondaryCallback (cb);
306+ gfx_connection_ ->AwaitVsyncForSecondaryCallback (cb);
287307 },
288308 product_config](flutter::Shell& shell) mutable {
289309 OnShaderWarmup on_shader_warmup = nullptr ;
@@ -529,8 +549,8 @@ void Engine::DebugWireframeSettingsChanged(bool enabled) {
529549 FML_CHECK (shell_);
530550
531551 shell_->GetTaskRunners ().GetRasterTaskRunner ()->PostTask ([this , enabled]() {
532- FML_CHECK (external_view_embedder_ );
533- external_view_embedder_ ->EnableWireframe (enabled);
552+ FML_CHECK (gfx_view_embedder_ );
553+ gfx_view_embedder_ ->EnableWireframe (enabled);
534554 });
535555}
536556
@@ -545,11 +565,11 @@ void Engine::CreateView(int64_t view_id,
545565 [this , view_id, hit_testable, focusable,
546566 on_view_created = std::move (on_view_created),
547567 on_view_bound = std::move (on_view_bound)]() {
548- FML_CHECK (external_view_embedder_ );
549- external_view_embedder_ ->CreateView (view_id, std::move (on_view_created),
550- std::move (on_view_bound));
551- external_view_embedder_ ->SetViewProperties (view_id, SkRect::MakeEmpty (),
552- hit_testable, focusable);
568+ FML_CHECK (gfx_view_embedder_ );
569+ gfx_view_embedder_ ->CreateView (view_id, std::move (on_view_created),
570+ std::move (on_view_bound));
571+ gfx_view_embedder_ ->SetViewProperties (view_id, SkRect::MakeEmpty (),
572+ hit_testable, focusable);
553573 });
554574}
555575
@@ -561,9 +581,9 @@ void Engine::UpdateView(int64_t view_id,
561581
562582 shell_->GetTaskRunners ().GetRasterTaskRunner ()->PostTask (
563583 [this , view_id, occlusion_hint, hit_testable, focusable]() {
564- FML_CHECK (external_view_embedder_ );
565- external_view_embedder_ ->SetViewProperties (view_id, occlusion_hint,
566- hit_testable, focusable);
584+ FML_CHECK (gfx_view_embedder_ );
585+ gfx_view_embedder_ ->SetViewProperties (view_id, occlusion_hint,
586+ hit_testable, focusable);
567587 });
568588}
569589
@@ -572,9 +592,8 @@ void Engine::DestroyView(int64_t view_id, ViewIdCallback on_view_unbound) {
572592
573593 shell_->GetTaskRunners ().GetRasterTaskRunner ()->PostTask (
574594 [this , view_id, on_view_unbound = std::move (on_view_unbound)]() {
575- FML_CHECK (external_view_embedder_);
576- external_view_embedder_->DestroyView (view_id,
577- std::move (on_view_unbound));
595+ FML_CHECK (gfx_view_embedder_);
596+ gfx_view_embedder_->DestroyView (view_id, std::move (on_view_unbound));
578597 });
579598}
580599
@@ -585,9 +604,9 @@ std::unique_ptr<flutter::Surface> Engine::CreateSurface() {
585604
586605std::shared_ptr<flutter::ExternalViewEmbedder>
587606Engine::GetExternalViewEmbedder () {
588- FML_CHECK (external_view_embedder_ );
607+ FML_CHECK (gfx_view_embedder_ );
589608
590- return external_view_embedder_ ;
609+ return gfx_view_embedder_ ;
591610}
592611
593612#if !defined(DART_PRODUCT)
0 commit comments