From 76034fdd45fc3f3d474d3c421743e5705290b2d7 Mon Sep 17 00:00:00 2001 From: Kaushik Iska Date: Fri, 20 Nov 2020 10:52:03 -0600 Subject: [PATCH] [embedder] FlutterBackingStoreConfig allows special treatment of root-views --- shell/platform/embedder/embedder.h | 2 ++ .../platform/embedder/embedder_external_view_embedder.cc | 8 +++++--- shell/platform/embedder/tests/embedder_config_builder.cc | 1 - 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/shell/platform/embedder/embedder.h b/shell/platform/embedder/embedder.h index f98f848e967b3..8fad4ceb7005f 100644 --- a/shell/platform/embedder/embedder.h +++ b/shell/platform/embedder/embedder.h @@ -871,6 +871,8 @@ typedef struct { size_t struct_size; /// The size of the render target the engine expects to render into. FlutterSize size; + /// This is true if a backing store is requested for the root view. + bool is_root_view; } FlutterBackingStoreConfig; typedef enum { diff --git a/shell/platform/embedder/embedder_external_view_embedder.cc b/shell/platform/embedder/embedder_external_view_embedder.cc index fc6c2905331c9..06de0284cc941 100644 --- a/shell/platform/embedder/embedder_external_view_embedder.cc +++ b/shell/platform/embedder/embedder_external_view_embedder.cc @@ -119,13 +119,15 @@ SkCanvas* EmbedderExternalViewEmbedder::CompositeEmbeddedView(int view_id) { } static FlutterBackingStoreConfig MakeBackingStoreConfig( - const SkISize& backing_store_size) { + const SkISize& backing_store_size, + bool is_root_view) { FlutterBackingStoreConfig config = {}; config.struct_size = sizeof(config); config.size.width = backing_store_size.width(); config.size.height = backing_store_size.height(); + config.is_root_view = is_root_view; return config; } @@ -172,8 +174,8 @@ void EmbedderExternalViewEmbedder::SubmitFrame( // directly. const auto render_surface_size = external_view->GetRenderSurfaceSize(); - const auto backing_store_config = - MakeBackingStoreConfig(render_surface_size); + const auto backing_store_config = MakeBackingStoreConfig( + render_surface_size, external_view->IsRootView()); // This is where the embedder will create render targets for us. Control // flow to the embedder makes the engine susceptible to having the embedder diff --git a/shell/platform/embedder/tests/embedder_config_builder.cc b/shell/platform/embedder/tests/embedder_config_builder.cc index 93d4c6af916f2..bc96fb776d0f7 100644 --- a/shell/platform/embedder/tests/embedder_config_builder.cc +++ b/shell/platform/embedder/tests/embedder_config_builder.cc @@ -276,7 +276,6 @@ void EmbedderConfigBuilder::SetCompositor() { return reinterpret_cast(user_data)->Present( layers, // layers_count // - ); }; project_args_.compositor = &compositor_;