From 4b921cbb5e4e49581adf79088eed4c12d290f094 Mon Sep 17 00:00:00 2001 From: Adam Barth Date: Mon, 8 Feb 2016 14:35:14 -0800 Subject: [PATCH] Make Mozart draw child views Previously we weren't factoring in the layer's offset properly and we were drawing the child views below the background layer. --- flow/layers/child_scene_layer.cc | 1 + sky/shell/gpu/mojo/rasterizer_mojo.cc | 20 ++++++++++++-------- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/flow/layers/child_scene_layer.cc b/flow/layers/child_scene_layer.cc index 0a6db85ee04..78d69a62c85 100644 --- a/flow/layers/child_scene_layer.cc +++ b/flow/layers/child_scene_layer.cc @@ -19,6 +19,7 @@ ChildSceneLayer::~ChildSceneLayer() { void ChildSceneLayer::Preroll(PrerollContext* context, const SkMatrix& matrix) { transform_ = matrix; + transform_.postTranslate(offset_.x(), offset_.y()); } void ChildSceneLayer::Paint(PaintContext::ScopedFrame& frame) { diff --git a/sky/shell/gpu/mojo/rasterizer_mojo.cc b/sky/shell/gpu/mojo/rasterizer_mojo.cc index 0847ecb0b92..d3bdf3530ce 100644 --- a/sky/shell/gpu/mojo/rasterizer_mojo.cc +++ b/sky/shell/gpu/mojo/rasterizer_mojo.cc @@ -14,6 +14,7 @@ namespace shell { const uint32_t kContentImageResourceId = 1; const uint32_t kRootNodeId = mojo::gfx::composition::kSceneRootNodeId; +const uint32_t kBackgroundNodeId = 1; std::unique_ptr Rasterizer::Create() { return std::unique_ptr(new RasterizerMojo()); @@ -87,17 +88,20 @@ void RasterizerMojo::Draw(uint64_t layer_tree_ptr, update->clear_resources = true; update->clear_nodes = true; update->resources.insert(kContentImageResourceId, resource.Pass()); - auto root_node = mojo::gfx::composition::Node::New(); - root_node->op = mojo::gfx::composition::NodeOp::New(); - root_node->op->set_image(mojo::gfx::composition::ImageNodeOp::New()); - root_node->op->get_image()->content_rect = mojo::Rect::New(); - root_node->op->get_image()->content_rect->width = size.width; - root_node->op->get_image()->content_rect->height = size.height; - root_node->op->get_image()->image_resource_id = kContentImageResourceId; - update->nodes.insert(kRootNodeId, root_node.Pass()); + auto background_node = mojo::gfx::composition::Node::New(); + background_node->op = mojo::gfx::composition::NodeOp::New(); + background_node->op->set_image(mojo::gfx::composition::ImageNodeOp::New()); + background_node->op->get_image()->content_rect = mojo::Rect::New(); + background_node->op->get_image()->content_rect->width = size.width; + background_node->op->get_image()->content_rect->height = size.height; + background_node->op->get_image()->image_resource_id = kContentImageResourceId; + update->nodes.insert(kBackgroundNodeId, background_node.Pass()); + auto root_node = mojo::gfx::composition::Node::New(); + root_node->child_node_ids.push_back(kBackgroundNodeId); layer_tree->UpdateScene(update.get(), root_node.get()); + update->nodes.insert(kRootNodeId, root_node.Pass()); scene_->Update(update.Pass()); scene_->Publish(nullptr); callback.Run();