diff --git a/flow/embedded_views.h b/flow/embedded_views.h index 37781ca0902e1..d320504d29f63 100644 --- a/flow/embedded_views.h +++ b/flow/embedded_views.h @@ -185,14 +185,14 @@ class ExternalViewEmbedder { virtual void BeginFrame(SkISize frame_size) = 0; - virtual void PrerollCompositeEmbeddedView(int view_id) = 0; + virtual void PrerollCompositeEmbeddedView( + int view_id, + std::unique_ptr params) = 0; virtual std::vector GetCurrentCanvases() = 0; // Must be called on the UI thread. - virtual SkCanvas* CompositeEmbeddedView( - int view_id, - std::unique_ptr params) = 0; + virtual SkCanvas* CompositeEmbeddedView(int view_id) = 0; virtual bool SubmitFrame(GrContext* context); diff --git a/flow/layers/clip_path_layer.cc b/flow/layers/clip_path_layer.cc index 5739172a20c11..cb7c8454e4743 100644 --- a/flow/layers/clip_path_layer.cc +++ b/flow/layers/clip_path_layer.cc @@ -23,12 +23,14 @@ void ClipPathLayer::Preroll(PrerollContext* context, const SkMatrix& matrix) { SkRect previous_cull_rect = context->cull_rect; SkRect clip_path_bounds = clip_path_.getBounds(); if (context->cull_rect.intersect(clip_path_bounds)) { + context->mutators_stack.pushClipPath(clip_path_); SkRect child_paint_bounds = SkRect::MakeEmpty(); PrerollChildren(context, matrix, &child_paint_bounds); if (child_paint_bounds.intersect(clip_path_bounds)) { set_paint_bounds(child_paint_bounds); } + context->mutators_stack.pop(); } context->cull_rect = previous_cull_rect; } @@ -60,7 +62,6 @@ void ClipPathLayer::Paint(PaintContext& context) const { SkAutoCanvasRestore save(context.internal_nodes_canvas, true); context.internal_nodes_canvas->clipPath(clip_path_, clip_behavior_ != Clip::hardEdge); - context.mutators_stack.pushClipPath(clip_path_); if (clip_behavior_ == Clip::antiAliasWithSaveLayer) { context.internal_nodes_canvas->saveLayer(paint_bounds(), nullptr); @@ -69,7 +70,6 @@ void ClipPathLayer::Paint(PaintContext& context) const { if (clip_behavior_ == Clip::antiAliasWithSaveLayer) { context.internal_nodes_canvas->restore(); } - context.mutators_stack.pop(); } } // namespace flutter diff --git a/flow/layers/clip_rect_layer.cc b/flow/layers/clip_rect_layer.cc index 31562649e1829..3f6cda5954be0 100644 --- a/flow/layers/clip_rect_layer.cc +++ b/flow/layers/clip_rect_layer.cc @@ -16,12 +16,14 @@ ClipRectLayer::~ClipRectLayer() = default; void ClipRectLayer::Preroll(PrerollContext* context, const SkMatrix& matrix) { SkRect previous_cull_rect = context->cull_rect; if (context->cull_rect.intersect(clip_rect_)) { + context->mutators_stack.pushClipRect(clip_rect_); SkRect child_paint_bounds = SkRect::MakeEmpty(); PrerollChildren(context, matrix, &child_paint_bounds); if (child_paint_bounds.intersect(clip_rect_)) { set_paint_bounds(child_paint_bounds); } + context->mutators_stack.pop(); } context->cull_rect = previous_cull_rect; } @@ -50,7 +52,6 @@ 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_); if (clip_behavior_ == Clip::antiAliasWithSaveLayer) { context.internal_nodes_canvas->saveLayer(clip_rect_, nullptr); @@ -59,7 +60,6 @@ void ClipRectLayer::Paint(PaintContext& context) const { if (clip_behavior_ == Clip::antiAliasWithSaveLayer) { context.internal_nodes_canvas->restore(); } - context.mutators_stack.pop(); } } // namespace flutter diff --git a/flow/layers/clip_rrect_layer.cc b/flow/layers/clip_rrect_layer.cc index 5308b806a1e88..7cd7dd24d1ee7 100644 --- a/flow/layers/clip_rrect_layer.cc +++ b/flow/layers/clip_rrect_layer.cc @@ -17,12 +17,14 @@ void ClipRRectLayer::Preroll(PrerollContext* context, const SkMatrix& matrix) { SkRect previous_cull_rect = context->cull_rect; SkRect clip_rrect_bounds = clip_rrect_.getBounds(); if (context->cull_rect.intersect(clip_rrect_bounds)) { + context->mutators_stack.pushClipRRect(clip_rrect_); SkRect child_paint_bounds = SkRect::MakeEmpty(); PrerollChildren(context, matrix, &child_paint_bounds); if (child_paint_bounds.intersect(clip_rrect_bounds)) { set_paint_bounds(child_paint_bounds); } + context->mutators_stack.pop(); } context->cull_rect = previous_cull_rect; } @@ -58,7 +60,6 @@ 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_); if (clip_behavior_ == Clip::antiAliasWithSaveLayer) { context.internal_nodes_canvas->saveLayer(paint_bounds(), nullptr); @@ -67,7 +68,6 @@ void ClipRRectLayer::Paint(PaintContext& context) const { if (clip_behavior_ == Clip::antiAliasWithSaveLayer) { context.internal_nodes_canvas->restore(); } - context.mutators_stack.pop(); } } // namespace flutter diff --git a/flow/layers/layer.h b/flow/layers/layer.h index 5e30a50c907f9..da2dcd8b21ce3 100644 --- a/flow/layers/layer.h +++ b/flow/layers/layer.h @@ -48,6 +48,7 @@ struct PrerollContext { RasterCache* raster_cache; GrContext* gr_context; ExternalViewEmbedder* view_embedder; + MutatorsStack& mutators_stack; SkColorSpace* dst_color_space; SkRect cull_rect; @@ -83,7 +84,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..b031ebf8cb8bd 100644 --- a/flow/layers/layer_tree.cc +++ b/flow/layers/layer_tree.cc @@ -31,10 +31,12 @@ void LayerTree::Preroll(CompositorContext::ScopedFrame& frame, frame.canvas() ? frame.canvas()->imageInfo().colorSpace() : nullptr; frame.context().raster_cache().SetCheckboardCacheImages( checkerboard_raster_cache_images_); + MutatorsStack stack; PrerollContext context = { ignore_raster_cache ? nullptr : &frame.context().raster_cache(), frame.gr_context(), frame.view_embedder(), + stack, color_space, kGiantRect, frame.context().raster_time(), @@ -83,13 +85,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(), @@ -121,6 +121,7 @@ sk_sp LayerTree::Flatten(const SkRect& bounds) { nullptr, // raster_cache (don't consult the cache) nullptr, // gr_context (used for the raster cache) nullptr, // external view embedder + unused_stack, // mutator stack nullptr, // SkColorSpace* dst_color_space kGiantRect, // SkRect cull_rect unused_stopwatch, // frame time (dont care) @@ -138,7 +139,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..c34d5b96bde78 100644 --- a/flow/layers/performance_overlay_layer_unittests.cc +++ b/flow/layers/performance_overlay_layer_unittests.cc @@ -47,13 +47,9 @@ 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, unused_texture_registry, - nullptr, false}; + nullptr, surface->getCanvas(), nullptr, nullptr, mock_stopwatch, + mock_stopwatch, unused_texture_registry, nullptr, false}; // Specify font file to ensure the same font across different operation // systems. diff --git a/flow/layers/physical_shape_layer_unittests.cc b/flow/layers/physical_shape_layer_unittests.cc index 5c2506f74784e..972424a2fec6d 100644 --- a/flow/layers/physical_shape_layer_unittests.cc +++ b/flow/layers/physical_shape_layer_unittests.cc @@ -28,10 +28,12 @@ TEST(PhysicalShapeLayer, TotalElevation) { const Stopwatch unused_stopwatch; TextureRegistry unused_texture_registry; + MutatorsStack unused_stack; PrerollContext preroll_context{ nullptr, // raster_cache (don't consult the cache) nullptr, // gr_context (used for the raster cache) nullptr, // external view embedder + unused_stack, // mutator stack nullptr, // SkColorSpace* dst_color_space kGiantRect, // SkRect cull_rect unused_stopwatch, // frame time (dont care) diff --git a/flow/layers/platform_view_layer.cc b/flow/layers/platform_view_layer.cc index 6205324ab0318..15f9edf9719ee 100644 --- a/flow/layers/platform_view_layer.cc +++ b/flow/layers/platform_view_layer.cc @@ -23,7 +23,14 @@ void PlatformViewLayer::Preroll(PrerollContext* context, "does not support embedding"; return; } - context->view_embedder->PrerollCompositeEmbeddedView(view_id_); + std::unique_ptr params = + std::make_unique(); + params->offsetPixels = + SkPoint::Make(matrix.getTranslateX(), matrix.getTranslateY()); + params->sizePoints = size_; + params->mutatorsStack = context->mutators_stack; + context->view_embedder->PrerollCompositeEmbeddedView(view_id_, + std::move(params)); } void PlatformViewLayer::Paint(PaintContext& context) const { @@ -32,16 +39,7 @@ void PlatformViewLayer::Paint(PaintContext& context) const { "does not support embedding"; return; } - std::unique_ptr params = - std::make_unique(); - SkMatrix transform = context.leaf_nodes_canvas->getTotalMatrix(); - params->offsetPixels = - SkPoint::Make(transform.getTranslateX(), transform.getTranslateY()); - params->sizePoints = size_; - params->mutatorsStack = context.mutators_stack; - - SkCanvas* canvas = - context.view_embedder->CompositeEmbeddedView(view_id_, std::move(params)); + SkCanvas* canvas = context.view_embedder->CompositeEmbeddedView(view_id_); context.leaf_nodes_canvas = canvas; } } // namespace flutter diff --git a/flow/layers/transform_layer.cc b/flow/layers/transform_layer.cc index 1a63ff8a48431..f1c2b013dfba5 100644 --- a/flow/layers/transform_layer.cc +++ b/flow/layers/transform_layer.cc @@ -29,7 +29,7 @@ TransformLayer::~TransformLayer() = default; void TransformLayer::Preroll(PrerollContext* context, const SkMatrix& matrix) { SkMatrix child_matrix; child_matrix.setConcat(matrix, transform_); - + context->mutators_stack.pushTransform(transform_); SkRect previous_cull_rect = context->cull_rect; SkMatrix inverse_transform_; // Perspective projections don't produce rectangles that are useful for @@ -47,6 +47,7 @@ void TransformLayer::Preroll(PrerollContext* context, const SkMatrix& matrix) { set_paint_bounds(child_paint_bounds); context->cull_rect = previous_cull_rect; + context->mutators_stack.pop(); } #if defined(OS_FUCHSIA) @@ -66,10 +67,8 @@ void TransformLayer::Paint(PaintContext& context) const { SkAutoCanvasRestore save(context.internal_nodes_canvas, true); context.internal_nodes_canvas->concat(transform_); - context.mutators_stack.pushTransform(transform_); PaintChildren(context); - context.mutators_stack.pop(); } } // namespace flutter diff --git a/flow/raster_cache.cc b/flow/raster_cache.cc index be0c88d5cc7e8..4ad18adf172e4 100644 --- a/flow/raster_cache.cc +++ b/flow/raster_cache.cc @@ -159,7 +159,6 @@ void RasterCache::Prepare(PrerollContext* context, entry.image = Rasterize(context->gr_context, ctm, context->dst_color_space, checkerboard_images_, layer->paint_bounds(), [layer, context](SkCanvas* canvas) { - MutatorsStack stack; SkISize canvas_size = canvas->getBaseLayerSize(); SkNWayCanvas internal_nodes_canvas( canvas_size.width(), canvas_size.height()); @@ -169,7 +168,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(), diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm index 39fb0e0fbb179..b717e41e00a3c 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm @@ -160,11 +160,21 @@ frame_size_ = frame_size; } -void FlutterPlatformViewsController::PrerollCompositeEmbeddedView(int view_id) { +void FlutterPlatformViewsController::PrerollCompositeEmbeddedView( + int view_id, + std::unique_ptr params) { picture_recorders_[view_id] = std::make_unique(); picture_recorders_[view_id]->beginRecording(SkRect::Make(frame_size_)); picture_recorders_[view_id]->getRecordingCanvas()->clear(SK_ColorTRANSPARENT); composition_order_.push_back(view_id); + + if (current_composition_params_.count(view_id) == 1 && + current_composition_params_[view_id] == *params.get()) { + // Do nothing if the params didn't change. + return; + } + current_composition_params_[view_id] = EmbeddedViewParams(*params.get()); + views_to_recomposite_.insert(view_id); } NSObject* FlutterPlatformViewsController::GetPlatformViewByID(int view_id) { @@ -272,15 +282,14 @@ head.layer.transform, CATransform3DMakeScale(1 / screenScale, 1 / screenScale, 1)); } -void FlutterPlatformViewsController::CompositeWithParams( - int view_id, - std::unique_ptr params) { - CGRect frame = CGRectMake(0, 0, params->sizePoints.width(), params->sizePoints.height()); +void FlutterPlatformViewsController::CompositeWithParams(int view_id, + const EmbeddedViewParams& params) { + CGRect frame = CGRectMake(0, 0, params.sizePoints.width(), params.sizePoints.height()); UIView* touchInterceptor = touch_interceptors_[view_id].get(); touchInterceptor.layer.transform = CATransform3DIdentity; touchInterceptor.frame = frame; - int currentClippingCount = CountClips(params->mutatorsStack); + int currentClippingCount = CountClips(params.mutatorsStack); int previousClippingCount = clip_count_[view_id]; if (currentClippingCount != previousClippingCount) { clip_count_[view_id] = currentClippingCount; @@ -291,23 +300,19 @@ ReconstructClipViewsChain(currentClippingCount, touchInterceptor, oldPlatformViewRoot); root_views_[view_id] = fml::scoped_nsobject([newPlatformViewRoot retain]); } - ApplyMutators(params->mutatorsStack, touchInterceptor); + ApplyMutators(params.mutatorsStack, touchInterceptor); } -SkCanvas* FlutterPlatformViewsController::CompositeEmbeddedView( - int view_id, - std::unique_ptr params) { +SkCanvas* FlutterPlatformViewsController::CompositeEmbeddedView(int view_id) { // TODO(amirh): assert that this is running on the platform thread once we support the iOS // embedded views thread configuration. - // Do nothing if the params didn't change. - if (current_composition_params_.count(view_id) == 1 && - current_composition_params_[view_id] == *params.get()) { + // Do nothing if the view doesn't need to be composited. + if (views_to_recomposite_.count(view_id) == 0) { return picture_recorders_[view_id]->getRecordingCanvas(); } - current_composition_params_[view_id] = EmbeddedViewParams(*params.get()); - CompositeWithParams(view_id, std::move(params)); - + CompositeWithParams(view_id, current_composition_params_[view_id]); + views_to_recomposite_.erase(view_id); return picture_recorders_[view_id]->getRecordingCanvas(); } @@ -323,6 +328,7 @@ picture_recorders_.clear(); current_composition_params_.clear(); clip_count_.clear(); + views_to_recomposite_.clear(); } bool FlutterPlatformViewsController::SubmitFrame(bool gl_rendering, @@ -414,6 +420,7 @@ overlays_.erase(viewId); current_composition_params_.erase(viewId); clip_count_.erase(viewId); + views_to_recomposite_.erase(viewId); } views_to_dispose_.clear(); } diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h index e4610e0559d60..9f04de5e0bfca 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h +++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h @@ -79,7 +79,8 @@ class FlutterPlatformViewsController { void SetFrameSize(SkISize frame_size); - void PrerollCompositeEmbeddedView(int view_id); + void PrerollCompositeEmbeddedView(int view_id, + std::unique_ptr params); // Returns the `FlutterPlatformView` object associated with the view_id. // @@ -90,7 +91,7 @@ class FlutterPlatformViewsController { std::vector GetCurrentCanvases(); - SkCanvas* CompositeEmbeddedView(int view_id, std::unique_ptr params); + SkCanvas* CompositeEmbeddedView(int view_id); // Discards all platform views instances and auxiliary resources. void Reset(); @@ -137,6 +138,9 @@ class FlutterPlatformViewsController { // The latest composition order that was presented in Present(). std::vector active_composition_order_; + // Only compoiste platform views in this set. + std::unordered_set views_to_recomposite_; + std::map> picture_recorders_; void OnCreate(FlutterMethodCall* call, FlutterResult& result); @@ -184,7 +188,7 @@ class FlutterPlatformViewsController { // // After each clip operation, we update the head to the super view of the current head. void ApplyMutators(const MutatorsStack& mutators_stack, UIView* embedded_view); - void CompositeWithParams(int view_id, std::unique_ptr params); + void CompositeWithParams(int view_id, const EmbeddedViewParams& params); FML_DISALLOW_COPY_AND_ASSIGN(FlutterPlatformViewsController); }; diff --git a/shell/platform/darwin/ios/ios_surface_gl.h b/shell/platform/darwin/ios/ios_surface_gl.h index 25c8613e6db6d..c337b896517f6 100644 --- a/shell/platform/darwin/ios/ios_surface_gl.h +++ b/shell/platform/darwin/ios/ios_surface_gl.h @@ -55,14 +55,14 @@ class IOSSurfaceGL final : public IOSSurface, void BeginFrame(SkISize frame_size) override; // |flutter::ExternalViewEmbedder| - void PrerollCompositeEmbeddedView(int view_id) override; + void PrerollCompositeEmbeddedView(int view_id, + std::unique_ptr params) override; // |flutter::ExternalViewEmbedder| std::vector GetCurrentCanvases() override; // |flutter::ExternalViewEmbedder| - SkCanvas* CompositeEmbeddedView(int view_id, - std::unique_ptr params) override; + SkCanvas* CompositeEmbeddedView(int view_id) override; // |flutter::ExternalViewEmbedder| bool SubmitFrame(GrContext* context) override; diff --git a/shell/platform/darwin/ios/ios_surface_gl.mm b/shell/platform/darwin/ios/ios_surface_gl.mm index ee7e27b7fade2..e2f4135e342bf 100644 --- a/shell/platform/darwin/ios/ios_surface_gl.mm +++ b/shell/platform/darwin/ios/ios_surface_gl.mm @@ -89,10 +89,12 @@ [CATransaction begin]; } -void IOSSurfaceGL::PrerollCompositeEmbeddedView(int view_id) { +void IOSSurfaceGL::PrerollCompositeEmbeddedView( + int view_id, + std::unique_ptr params) { FlutterPlatformViewsController* platform_views_controller = GetPlatformViewsController(); FML_CHECK(platform_views_controller != nullptr); - platform_views_controller->PrerollCompositeEmbeddedView(view_id); + platform_views_controller->PrerollCompositeEmbeddedView(view_id, std::move(params)); } std::vector IOSSurfaceGL::GetCurrentCanvases() { @@ -101,11 +103,10 @@ return platform_views_controller->GetCurrentCanvases(); } -SkCanvas* IOSSurfaceGL::CompositeEmbeddedView(int view_id, - std::unique_ptr params) { +SkCanvas* IOSSurfaceGL::CompositeEmbeddedView(int view_id) { FlutterPlatformViewsController* platform_views_controller = GetPlatformViewsController(); FML_CHECK(platform_views_controller != nullptr); - return platform_views_controller->CompositeEmbeddedView(view_id, std::move(params)); + return platform_views_controller->CompositeEmbeddedView(view_id); } bool IOSSurfaceGL::SubmitFrame(GrContext* context) { diff --git a/shell/platform/darwin/ios/ios_surface_software.h b/shell/platform/darwin/ios/ios_surface_software.h index af9bb9c6c9c9b..a4c2dd9af6764 100644 --- a/shell/platform/darwin/ios/ios_surface_software.h +++ b/shell/platform/darwin/ios/ios_surface_software.h @@ -49,14 +49,14 @@ class IOSSurfaceSoftware final : public IOSSurface, void BeginFrame(SkISize frame_size) override; // |flutter::ExternalViewEmbedder| - void PrerollCompositeEmbeddedView(int view_id) override; + void PrerollCompositeEmbeddedView(int view_id, + std::unique_ptr params) override; // |flutter::ExternalViewEmbedder| std::vector GetCurrentCanvases() override; // |flutter::ExternalViewEmbedder| - SkCanvas* CompositeEmbeddedView(int view_id, - std::unique_ptr params) override; + SkCanvas* CompositeEmbeddedView(int view_id) override; // |flutter::ExternalViewEmbedder| bool SubmitFrame(GrContext* context) override; diff --git a/shell/platform/darwin/ios/ios_surface_software.mm b/shell/platform/darwin/ios/ios_surface_software.mm index fb2fe0b104bdf..289785a200374 100644 --- a/shell/platform/darwin/ios/ios_surface_software.mm +++ b/shell/platform/darwin/ios/ios_surface_software.mm @@ -141,10 +141,12 @@ platform_views_controller->SetFrameSize(frame_size); } -void IOSSurfaceSoftware::PrerollCompositeEmbeddedView(int view_id) { +void IOSSurfaceSoftware::PrerollCompositeEmbeddedView( + int view_id, + std::unique_ptr params) { FlutterPlatformViewsController* platform_views_controller = GetPlatformViewsController(); FML_CHECK(platform_views_controller != nullptr); - platform_views_controller->PrerollCompositeEmbeddedView(view_id); + platform_views_controller->PrerollCompositeEmbeddedView(view_id, std::move(params)); } std::vector IOSSurfaceSoftware::GetCurrentCanvases() { @@ -153,12 +155,10 @@ return platform_views_controller->GetCurrentCanvases(); } -SkCanvas* IOSSurfaceSoftware::CompositeEmbeddedView( - int view_id, - std::unique_ptr params) { +SkCanvas* IOSSurfaceSoftware::CompositeEmbeddedView(int view_id) { FlutterPlatformViewsController* platform_views_controller = GetPlatformViewsController(); FML_CHECK(platform_views_controller != nullptr); - return platform_views_controller->CompositeEmbeddedView(view_id, std::move(params)); + return platform_views_controller->CompositeEmbeddedView(view_id); } bool IOSSurfaceSoftware::SubmitFrame(GrContext* context) {