diff --git a/flow/embedded_views.h b/flow/embedded_views.h index 88cfac45d28b2..b3f8389742d41 100644 --- a/flow/embedded_views.h +++ b/flow/embedded_views.h @@ -179,11 +179,13 @@ class EmbeddedViewParams { // in this case ExternalViewEmbedder is a reference to the // FlutterPlatformViewsController which is owned by FlutterViewController. class ExternalViewEmbedder { - // TODO(cyanglaz): Make embedder own the `EmbeddedViewParams`. public: ExternalViewEmbedder() = default; + // the params object used to composite the platform views. + EmbeddedViewParams embedded_view_params; + virtual void BeginFrame(SkISize frame_size) = 0; virtual void PrerollCompositeEmbeddedView(int view_id) = 0; diff --git a/flow/layers/clip_rect_layer.cc b/flow/layers/clip_rect_layer.cc index 31562649e1829..643025c1ef7ca 100644 --- a/flow/layers/clip_rect_layer.cc +++ b/flow/layers/clip_rect_layer.cc @@ -50,7 +50,7 @@ void ClipRectLayer::Paint(PaintContext& context) const { SkAutoCanvasRestore save(context.internal_nodes_canvas, true); context.internal_nodes_canvas->clipRect(clip_rect_, clip_behavior_ != Clip::hardEdge); - context.mutators_stack.pushClipRect(clip_rect_); + context.view_embedder->embedded_view_params.mutatorsStack.pushClipRect(clip_rect_); if (clip_behavior_ == Clip::antiAliasWithSaveLayer) { context.internal_nodes_canvas->saveLayer(clip_rect_, nullptr); @@ -59,7 +59,7 @@ void ClipRectLayer::Paint(PaintContext& context) const { if (clip_behavior_ == Clip::antiAliasWithSaveLayer) { context.internal_nodes_canvas->restore(); } - context.mutators_stack.pop(); + context.view_embedder->embedded_view_params.mutatorsStack.pop(); } } // namespace flutter diff --git a/flow/layers/clip_rrect_layer.cc b/flow/layers/clip_rrect_layer.cc index 5308b806a1e88..72583d2d023c7 100644 --- a/flow/layers/clip_rrect_layer.cc +++ b/flow/layers/clip_rrect_layer.cc @@ -58,7 +58,7 @@ void ClipRRectLayer::Paint(PaintContext& context) const { SkAutoCanvasRestore save(context.internal_nodes_canvas, true); context.internal_nodes_canvas->clipRRect(clip_rrect_, clip_behavior_ != Clip::hardEdge); - context.mutators_stack.pushClipRRect(clip_rrect_); + context.view_embedder->embedded_view_params.mutatorsStack.pushClipRRect(clip_rrect_); if (clip_behavior_ == Clip::antiAliasWithSaveLayer) { context.internal_nodes_canvas->saveLayer(paint_bounds(), nullptr); @@ -67,7 +67,7 @@ void ClipRRectLayer::Paint(PaintContext& context) const { if (clip_behavior_ == Clip::antiAliasWithSaveLayer) { context.internal_nodes_canvas->restore(); } - context.mutators_stack.pop(); + context.view_embedder->embedded_view_params.mutatorsStack.pop(); } } // namespace flutter diff --git a/flow/layers/layer.h b/flow/layers/layer.h index 5e30a50c907f9..7400af5468214 100644 --- a/flow/layers/layer.h +++ b/flow/layers/layer.h @@ -83,7 +83,6 @@ class Layer { SkCanvas* leaf_nodes_canvas; GrContext* gr_context; ExternalViewEmbedder* view_embedder; - MutatorsStack& mutators_stack; const Stopwatch& raster_time; const Stopwatch& ui_time; TextureRegistry& texture_registry; diff --git a/flow/layers/layer_tree.cc b/flow/layers/layer_tree.cc index 57bc87838980b..5de5f9a48fba9 100644 --- a/flow/layers/layer_tree.cc +++ b/flow/layers/layer_tree.cc @@ -83,13 +83,11 @@ void LayerTree::Paint(CompositorContext::ScopedFrame& frame, } } - MutatorsStack stack; Layer::PaintContext context = { (SkCanvas*)&internal_nodes_canvas, frame.canvas(), frame.gr_context(), frame.view_embedder(), - stack, frame.context().raster_time(), frame.context().ui_time(), frame.context().texture_registry(), @@ -110,7 +108,6 @@ sk_sp LayerTree::Flatten(const SkRect& bounds) { return nullptr; } - MutatorsStack unused_stack; const Stopwatch unused_stopwatch; TextureRegistry unused_texture_registry; SkMatrix root_surface_transformation; @@ -138,7 +135,6 @@ sk_sp LayerTree::Flatten(const SkRect& bounds) { canvas, // canvas nullptr, nullptr, - unused_stack, unused_stopwatch, // frame time (dont care) unused_stopwatch, // engine time (dont care) unused_texture_registry, // texture registry (not supported) diff --git a/flow/layers/performance_overlay_layer_unittests.cc b/flow/layers/performance_overlay_layer_unittests.cc index f82b0e2963869..3234a94b0ed68 100644 --- a/flow/layers/performance_overlay_layer_unittests.cc +++ b/flow/layers/performance_overlay_layer_unittests.cc @@ -47,11 +47,10 @@ TEST(PerformanceOverlayLayer, Gold) { ASSERT_TRUE(surface != nullptr); flutter::TextureRegistry unused_texture_registry; - flutter::MutatorsStack unused_stack; flutter::Layer::PaintContext paintContext = { nullptr, surface->getCanvas(), nullptr, nullptr, - unused_stack, mock_stopwatch, + mock_stopwatch, mock_stopwatch, unused_texture_registry, nullptr, false}; diff --git a/flow/layers/platform_view_layer.cc b/flow/layers/platform_view_layer.cc index c7845a867de61..c7e9c1ca7c4ee 100644 --- a/flow/layers/platform_view_layer.cc +++ b/flow/layers/platform_view_layer.cc @@ -32,15 +32,13 @@ void PlatformViewLayer::Paint(PaintContext& context) const { "does not support embedding"; return; } - EmbeddedViewParams params; SkMatrix transform = context.leaf_nodes_canvas->getTotalMatrix(); - params.offsetPixels = + context.view_embedder->embedded_view_params.offsetPixels = SkPoint::Make(transform.getTranslateX(), transform.getTranslateY()); - params.sizePoints = size_; - params.mutatorsStack = context.mutators_stack; + context.view_embedder->embedded_view_params.sizePoints = size_; SkCanvas* canvas = - context.view_embedder->CompositeEmbeddedView(view_id_, params); + context.view_embedder->CompositeEmbeddedView(view_id_, context.view_embedder->embedded_view_params); context.leaf_nodes_canvas = canvas; } } // namespace flutter diff --git a/flow/layers/transform_layer.cc b/flow/layers/transform_layer.cc index 1a63ff8a48431..b9007d4995c06 100644 --- a/flow/layers/transform_layer.cc +++ b/flow/layers/transform_layer.cc @@ -66,10 +66,10 @@ void TransformLayer::Paint(PaintContext& context) const { SkAutoCanvasRestore save(context.internal_nodes_canvas, true); context.internal_nodes_canvas->concat(transform_); - context.mutators_stack.pushTransform(transform_); + context.view_embedder->embedded_view_params.mutatorsStack.pushTransform(transform_); PaintChildren(context); - context.mutators_stack.pop(); + context.view_embedder->embedded_view_params.mutatorsStack.pop(); } } // namespace flutter diff --git a/flow/raster_cache.cc b/flow/raster_cache.cc index be0c88d5cc7e8..41518ec9ac900 100644 --- a/flow/raster_cache.cc +++ b/flow/raster_cache.cc @@ -169,7 +169,6 @@ void RasterCache::Prepare(PrerollContext* context, canvas, context->gr_context, nullptr, - stack, context->raster_time, context->ui_time, context->texture_registry, diff --git a/flow/scene_update_context.cc b/flow/scene_update_context.cc index 5a27f3a74609a..d1fe2a94fa262 100644 --- a/flow/scene_update_context.cc +++ b/flow/scene_update_context.cc @@ -198,12 +198,10 @@ SceneUpdateContext::ExecutePaintTasks(CompositorContext::ScopedFrame& frame) { for (auto& task : paint_tasks_) { FML_DCHECK(task.surface); SkCanvas* canvas = task.surface->GetSkiaSurface()->getCanvas(); - flutter::MutatorsStack stack; Layer::PaintContext context = {canvas, canvas, frame.gr_context(), nullptr, - stack, frame.context().raster_time(), frame.context().ui_time(), frame.context().texture_registry(),