From 1805d81faae7b2845203f5540f96bf3de6c14163 Mon Sep 17 00:00:00 2001 From: Chris Yang Date: Mon, 1 Jul 2019 15:47:22 -0700 Subject: [PATCH 1/3] make param a unique ptr --- flow/embedded_views.h | 6 +++++- flow/layers/platform_view_layer.cc | 10 +++++----- .../framework/Source/FlutterPlatformViews.mm | 17 ++++++++--------- .../Source/FlutterPlatformViews_Internal.h | 4 ++-- shell/platform/darwin/ios/ios_surface_gl.h | 2 +- shell/platform/darwin/ios/ios_surface_gl.mm | 4 ++-- .../platform/darwin/ios/ios_surface_software.h | 2 +- .../platform/darwin/ios/ios_surface_software.mm | 4 ++-- 8 files changed, 26 insertions(+), 23 deletions(-) diff --git a/flow/embedded_views.h b/flow/embedded_views.h index 88cfac45d28b2..1b1d4a8b416b9 100644 --- a/flow/embedded_views.h +++ b/flow/embedded_views.h @@ -150,6 +150,10 @@ class MutatorsStack { return !operator==(other); } + int size() const { + return vector_.size(); + } + private: std::vector> vector_; }; // MutatorsStack @@ -192,7 +196,7 @@ class ExternalViewEmbedder { // Must be called on the UI thread. virtual SkCanvas* CompositeEmbeddedView(int view_id, - const EmbeddedViewParams& params) = 0; + std::unique_ptr params) = 0; virtual bool SubmitFrame(GrContext* context); diff --git a/flow/layers/platform_view_layer.cc b/flow/layers/platform_view_layer.cc index c7845a867de61..f62202b28b92b 100644 --- a/flow/layers/platform_view_layer.cc +++ b/flow/layers/platform_view_layer.cc @@ -32,15 +32,15 @@ void PlatformViewLayer::Paint(PaintContext& context) const { "does not support embedding"; return; } - EmbeddedViewParams params; + std::unique_ptr params = std::make_unique(); SkMatrix transform = context.leaf_nodes_canvas->getTotalMatrix(); - params.offsetPixels = + params->offsetPixels = SkPoint::Make(transform.getTranslateX(), transform.getTranslateY()); - params.sizePoints = size_; - params.mutatorsStack = context.mutators_stack; + params->sizePoints = size_; + params->mutatorsStack = context.mutators_stack; SkCanvas* canvas = - context.view_embedder->CompositeEmbeddedView(view_id_, params); + context.view_embedder->CompositeEmbeddedView(view_id_, std::move(params)); context.leaf_nodes_canvas = canvas; } } // namespace flutter diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm index 25f7ad943cfcc..ba9c6b8647f3f 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm @@ -231,7 +231,6 @@ void FlutterPlatformViewsController::ApplyMutators(const MutatorsStack& mutators_stack, UIView* embedded_view) { FML_DCHECK(CATransform3DEqualToTransform(embedded_view.layer.transform, CATransform3DIdentity)); - UIView* head = embedded_view; head.clipsToBounds = YES; ResetAnchor(head.layer); @@ -276,13 +275,13 @@ void FlutterPlatformViewsController::CompositeWithParams( int view_id, - const flutter::EmbeddedViewParams& params) { - CGRect frame = CGRectMake(0, 0, params.sizePoints.width(), params.sizePoints.height()); + std::unique_ptr 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; @@ -293,22 +292,22 @@ 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, - const flutter::EmbeddedViewParams& params) { + std::unique_ptr params) { // 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) { + current_composition_params_[view_id] == *params.get()) { return picture_recorders_[view_id]->getRecordingCanvas(); } - current_composition_params_[view_id] = EmbeddedViewParams(params); - CompositeWithParams(view_id, params); + current_composition_params_[view_id] = EmbeddedViewParams(*params.get()); + CompositeWithParams(view_id, std::move(params)); return picture_recorders_[view_id]->getRecordingCanvas(); } diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h index dfa4816f48d38..992347f68ebbf 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h +++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h @@ -91,7 +91,7 @@ class FlutterPlatformViewsController { std::vector GetCurrentCanvases(); - SkCanvas* CompositeEmbeddedView(int view_id, const flutter::EmbeddedViewParams& params); + SkCanvas* CompositeEmbeddedView(int view_id, std::unique_ptr params); // Discards all platform views instances and auxiliary resources. void Reset(); @@ -185,7 +185,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, const flutter::EmbeddedViewParams& params); + void CompositeWithParams(int view_id, std::unique_ptr 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 0090634a99033..34d13f022d90c 100644 --- a/shell/platform/darwin/ios/ios_surface_gl.h +++ b/shell/platform/darwin/ios/ios_surface_gl.h @@ -61,7 +61,7 @@ class IOSSurfaceGL final : public IOSSurface, std::vector GetCurrentCanvases() override; // |flutter::ExternalViewEmbedder| - SkCanvas* CompositeEmbeddedView(int view_id, const flutter::EmbeddedViewParams& params) override; + SkCanvas* CompositeEmbeddedView(int view_id, std::unique_ptr params) 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 f9279cc5116fe..ee7e27b7fade2 100644 --- a/shell/platform/darwin/ios/ios_surface_gl.mm +++ b/shell/platform/darwin/ios/ios_surface_gl.mm @@ -102,10 +102,10 @@ } SkCanvas* IOSSurfaceGL::CompositeEmbeddedView(int view_id, - const flutter::EmbeddedViewParams& params) { + std::unique_ptr params) { FlutterPlatformViewsController* platform_views_controller = GetPlatformViewsController(); FML_CHECK(platform_views_controller != nullptr); - return platform_views_controller->CompositeEmbeddedView(view_id, params); + return platform_views_controller->CompositeEmbeddedView(view_id, std::move(params)); } 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 bcb5b6210bf6b..90f9604ae0204 100644 --- a/shell/platform/darwin/ios/ios_surface_software.h +++ b/shell/platform/darwin/ios/ios_surface_software.h @@ -55,7 +55,7 @@ class IOSSurfaceSoftware final : public IOSSurface, std::vector GetCurrentCanvases() override; // |flutter::ExternalViewEmbedder| - SkCanvas* CompositeEmbeddedView(int view_id, const flutter::EmbeddedViewParams& params) override; + SkCanvas* CompositeEmbeddedView(int view_id, std::unique_ptr params) 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 32cb5a2bbeef1..2009ddd293611 100644 --- a/shell/platform/darwin/ios/ios_surface_software.mm +++ b/shell/platform/darwin/ios/ios_surface_software.mm @@ -154,10 +154,10 @@ } SkCanvas* IOSSurfaceSoftware::CompositeEmbeddedView(int view_id, - const flutter::EmbeddedViewParams& params) { + std::unique_ptr params) { FlutterPlatformViewsController* platform_views_controller = GetPlatformViewsController(); FML_CHECK(platform_views_controller != nullptr); - return platform_views_controller->CompositeEmbeddedView(view_id, params); + return platform_views_controller->CompositeEmbeddedView(view_id, std::move(params)); } bool IOSSurfaceSoftware::SubmitFrame(GrContext* context) { From 053bd87735e2c48627f49b57aef1ef9130f48c0b Mon Sep 17 00:00:00 2001 From: Chris Yang Date: Mon, 1 Jul 2019 15:50:47 -0700 Subject: [PATCH 2/3] cleanup and formatting --- flow/embedded_views.h | 9 +++------ flow/layers/platform_view_layer.cc | 5 +++-- .../darwin/ios/framework/Source/FlutterPlatformViews.mm | 2 +- shell/platform/darwin/ios/ios_surface_gl.h | 3 ++- shell/platform/darwin/ios/ios_surface_software.h | 3 ++- shell/platform/darwin/ios/ios_surface_software.mm | 5 +++-- 6 files changed, 14 insertions(+), 13 deletions(-) diff --git a/flow/embedded_views.h b/flow/embedded_views.h index 1b1d4a8b416b9..f09c6bd2472c9 100644 --- a/flow/embedded_views.h +++ b/flow/embedded_views.h @@ -150,10 +150,6 @@ class MutatorsStack { return !operator==(other); } - int size() const { - return vector_.size(); - } - private: std::vector> vector_; }; // MutatorsStack @@ -195,8 +191,9 @@ class ExternalViewEmbedder { 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, + std::unique_ptr params) = 0; virtual bool SubmitFrame(GrContext* context); diff --git a/flow/layers/platform_view_layer.cc b/flow/layers/platform_view_layer.cc index f62202b28b92b..6205324ab0318 100644 --- a/flow/layers/platform_view_layer.cc +++ b/flow/layers/platform_view_layer.cc @@ -32,7 +32,8 @@ void PlatformViewLayer::Paint(PaintContext& context) const { "does not support embedding"; return; } - std::unique_ptr params = std::make_unique(); + std::unique_ptr params = + std::make_unique(); SkMatrix transform = context.leaf_nodes_canvas->getTotalMatrix(); params->offsetPixels = SkPoint::Make(transform.getTranslateX(), transform.getTranslateY()); @@ -40,7 +41,7 @@ void PlatformViewLayer::Paint(PaintContext& context) const { params->mutatorsStack = context.mutators_stack; SkCanvas* canvas = - context.view_embedder->CompositeEmbeddedView(view_id_, std::move(params)); + context.view_embedder->CompositeEmbeddedView(view_id_, std::move(params)); context.leaf_nodes_canvas = canvas; } } // namespace flutter diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm index ba9c6b8647f3f..ca649c0763afa 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm @@ -297,7 +297,7 @@ SkCanvas* FlutterPlatformViewsController::CompositeEmbeddedView( int view_id, - std::unique_ptr params) { + std::unique_ptr params) { // TODO(amirh): assert that this is running on the platform thread once we support the iOS // embedded views thread configuration. diff --git a/shell/platform/darwin/ios/ios_surface_gl.h b/shell/platform/darwin/ios/ios_surface_gl.h index 34d13f022d90c..25c8613e6db6d 100644 --- a/shell/platform/darwin/ios/ios_surface_gl.h +++ b/shell/platform/darwin/ios/ios_surface_gl.h @@ -61,7 +61,8 @@ class IOSSurfaceGL final : public IOSSurface, std::vector GetCurrentCanvases() override; // |flutter::ExternalViewEmbedder| - SkCanvas* CompositeEmbeddedView(int view_id, std::unique_ptr params) override; + SkCanvas* CompositeEmbeddedView(int view_id, + std::unique_ptr params) override; // |flutter::ExternalViewEmbedder| bool SubmitFrame(GrContext* context) override; diff --git a/shell/platform/darwin/ios/ios_surface_software.h b/shell/platform/darwin/ios/ios_surface_software.h index 90f9604ae0204..af9bb9c6c9c9b 100644 --- a/shell/platform/darwin/ios/ios_surface_software.h +++ b/shell/platform/darwin/ios/ios_surface_software.h @@ -55,7 +55,8 @@ class IOSSurfaceSoftware final : public IOSSurface, std::vector GetCurrentCanvases() override; // |flutter::ExternalViewEmbedder| - SkCanvas* CompositeEmbeddedView(int view_id, std::unique_ptr params) override; + SkCanvas* CompositeEmbeddedView(int view_id, + std::unique_ptr params) 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 2009ddd293611..fb2fe0b104bdf 100644 --- a/shell/platform/darwin/ios/ios_surface_software.mm +++ b/shell/platform/darwin/ios/ios_surface_software.mm @@ -153,8 +153,9 @@ return platform_views_controller->GetCurrentCanvases(); } -SkCanvas* IOSSurfaceSoftware::CompositeEmbeddedView(int view_id, - std::unique_ptr params) { +SkCanvas* IOSSurfaceSoftware::CompositeEmbeddedView( + int view_id, + std::unique_ptr params) { FlutterPlatformViewsController* platform_views_controller = GetPlatformViewsController(); FML_CHECK(platform_views_controller != nullptr); return platform_views_controller->CompositeEmbeddedView(view_id, std::move(params)); From 93c95408008a71e89c499ade1c391792292907ed Mon Sep 17 00:00:00 2001 From: Chris Yang Date: Tue, 2 Jul 2019 11:41:37 -0700 Subject: [PATCH 3/3] remove extra line --- .../darwin/ios/framework/Source/FlutterPlatformViews_Internal.h | 1 - 1 file changed, 1 deletion(-) diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h index e509f863e5b4c..e4610e0559d60 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h +++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h @@ -184,7 +184,6 @@ 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); FML_DISALLOW_COPY_AND_ASSIGN(FlutterPlatformViewsController);