[go: nahoru, domu]

Skip to content

Commit

Permalink
make EmbeddedViewParams a unique ptr (flutter#9640)
Browse files Browse the repository at this point in the history
  • Loading branch information
Chris Yang committed Jul 2, 2019
1 parent 7862af5 commit 8deeb77
Show file tree
Hide file tree
Showing 8 changed files with 29 additions and 25 deletions.
5 changes: 3 additions & 2 deletions flow/embedded_views.h
Original file line number Diff line number Diff line change
Expand Up @@ -190,8 +190,9 @@ class ExternalViewEmbedder {
virtual std::vector<SkCanvas*> GetCurrentCanvases() = 0;

// Must be called on the UI thread.
virtual SkCanvas* CompositeEmbeddedView(int view_id,
const EmbeddedViewParams& params) = 0;
virtual SkCanvas* CompositeEmbeddedView(
int view_id,
std::unique_ptr<flutter::EmbeddedViewParams> params) = 0;

virtual bool SubmitFrame(GrContext* context);

Expand Down
11 changes: 6 additions & 5 deletions flow/layers/platform_view_layer.cc
Original file line number Diff line number Diff line change
Expand Up @@ -32,15 +32,16 @@ void PlatformViewLayer::Paint(PaintContext& context) const {
"does not support embedding";
return;
}
EmbeddedViewParams params;
std::unique_ptr<EmbeddedViewParams> params =
std::make_unique<EmbeddedViewParams>();
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
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down Expand Up @@ -275,13 +274,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<flutter::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;
Expand All @@ -292,22 +291,22 @@
ReconstructClipViewsChain(currentClippingCount, touchInterceptor, oldPlatformViewRoot);
root_views_[view_id] = fml::scoped_nsobject<UIView>([newPlatformViewRoot retain]);
}
ApplyMutators(params.mutatorsStack, touchInterceptor);
ApplyMutators(params->mutatorsStack, touchInterceptor);
}

SkCanvas* FlutterPlatformViewsController::CompositeEmbeddedView(
int view_id,
const flutter::EmbeddedViewParams& params) {
std::unique_ptr<flutter::EmbeddedViewParams> 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();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ class FlutterPlatformViewsController {

std::vector<SkCanvas*> GetCurrentCanvases();

SkCanvas* CompositeEmbeddedView(int view_id, const flutter::EmbeddedViewParams& params);
SkCanvas* CompositeEmbeddedView(int view_id, std::unique_ptr<flutter::EmbeddedViewParams> params);

// Discards all platform views instances and auxiliary resources.
void Reset();
Expand Down Expand Up @@ -184,7 +184,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<flutter::EmbeddedViewParams> params);

FML_DISALLOW_COPY_AND_ASSIGN(FlutterPlatformViewsController);
};
Expand Down
3 changes: 2 additions & 1 deletion shell/platform/darwin/ios/ios_surface_gl.h
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,8 @@ class IOSSurfaceGL final : public IOSSurface,
std::vector<SkCanvas*> GetCurrentCanvases() override;

// |flutter::ExternalViewEmbedder|
SkCanvas* CompositeEmbeddedView(int view_id, const flutter::EmbeddedViewParams& params) override;
SkCanvas* CompositeEmbeddedView(int view_id,
std::unique_ptr<flutter::EmbeddedViewParams> params) override;

// |flutter::ExternalViewEmbedder|
bool SubmitFrame(GrContext* context) override;
Expand Down
4 changes: 2 additions & 2 deletions shell/platform/darwin/ios/ios_surface_gl.mm
Original file line number Diff line number Diff line change
Expand Up @@ -102,10 +102,10 @@
}

SkCanvas* IOSSurfaceGL::CompositeEmbeddedView(int view_id,
const flutter::EmbeddedViewParams& params) {
std::unique_ptr<flutter::EmbeddedViewParams> 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) {
Expand Down
3 changes: 2 additions & 1 deletion shell/platform/darwin/ios/ios_surface_software.h
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,8 @@ class IOSSurfaceSoftware final : public IOSSurface,
std::vector<SkCanvas*> GetCurrentCanvases() override;

// |flutter::ExternalViewEmbedder|
SkCanvas* CompositeEmbeddedView(int view_id, const flutter::EmbeddedViewParams& params) override;
SkCanvas* CompositeEmbeddedView(int view_id,
std::unique_ptr<flutter::EmbeddedViewParams> params) override;

// |flutter::ExternalViewEmbedder|
bool SubmitFrame(GrContext* context) override;
Expand Down
7 changes: 4 additions & 3 deletions shell/platform/darwin/ios/ios_surface_software.mm
Original file line number Diff line number Diff line change
Expand Up @@ -153,11 +153,12 @@
return platform_views_controller->GetCurrentCanvases();
}

SkCanvas* IOSSurfaceSoftware::CompositeEmbeddedView(int view_id,
const flutter::EmbeddedViewParams& params) {
SkCanvas* IOSSurfaceSoftware::CompositeEmbeddedView(
int view_id,
std::unique_ptr<flutter::EmbeddedViewParams> 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) {
Expand Down

0 comments on commit 8deeb77

Please sign in to comment.