Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion flow/embedded_views.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The ExternalViewEmbedder is the objects that's responsible for embedding all platform views, it's a little strange to have it keep the parameters of a specific view here.

Discussed offline: we probably want to std:move the params in platform_view_layer.cc


virtual void BeginFrame(SkISize frame_size) = 0;

virtual void PrerollCompositeEmbeddedView(int view_id) = 0;
Expand Down
4 changes: 2 additions & 2 deletions flow/layers/clip_rect_layer.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand All @@ -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
4 changes: 2 additions & 2 deletions flow/layers/clip_rrect_layer.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand All @@ -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
1 change: 0 additions & 1 deletion flow/layers/layer.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
4 changes: 0 additions & 4 deletions flow/layers/layer_tree.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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(),
Expand All @@ -110,7 +108,6 @@ sk_sp<SkPicture> LayerTree::Flatten(const SkRect& bounds) {
return nullptr;
}

MutatorsStack unused_stack;
const Stopwatch unused_stopwatch;
TextureRegistry unused_texture_registry;
SkMatrix root_surface_transformation;
Expand Down Expand Up @@ -138,7 +135,6 @@ sk_sp<SkPicture> 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)
Expand Down
3 changes: 1 addition & 2 deletions flow/layers/performance_overlay_layer_unittests.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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};

Expand Down
8 changes: 3 additions & 5 deletions flow/layers/platform_view_layer.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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
4 changes: 2 additions & 2 deletions flow/layers/transform_layer.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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
1 change: 0 additions & 1 deletion flow/raster_cache.cc
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,6 @@ void RasterCache::Prepare(PrerollContext* context,
canvas,
context->gr_context,
nullptr,
stack,
context->raster_time,
context->ui_time,
context->texture_registry,
Expand Down
2 changes: 0 additions & 2 deletions flow/scene_update_context.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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(),
Expand Down