Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(24)

Side by Side Diff: cc/trees/property_tree_builder.cc

Issue 1544103002: Determine a layer's IsAffectedByPageScale property without using Layer Tree (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Moving in_subtree_of_page_scale_layer assignment from BuildPropertyTreesInternal to AddTransformNod… Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « cc/layers/picture_layer_impl_unittest.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "cc/trees/property_tree_builder.h" 5 #include "cc/trees/property_tree_builder.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <map> 9 #include <map>
10 #include <set> 10 #include <set>
(...skipping 300 matching lines...) Expand 10 before | Expand all | Expand 10 after
311 311
312 data_for_children->transform_tree->Insert(TransformNode(), parent_index); 312 data_for_children->transform_tree->Insert(TransformNode(), parent_index);
313 313
314 TransformNode* node = data_for_children->transform_tree->back(); 314 TransformNode* node = data_for_children->transform_tree->back();
315 layer->SetTransformTreeIndex(node->id); 315 layer->SetTransformTreeIndex(node->id);
316 if (layer->mask_layer()) 316 if (layer->mask_layer())
317 layer->mask_layer()->SetTransformTreeIndex(node->id); 317 layer->mask_layer()->SetTransformTreeIndex(node->id);
318 318
319 node->data.scrolls = is_scrollable; 319 node->data.scrolls = is_scrollable;
320 node->data.flattens_inherited_transform = data_for_children->should_flatten; 320 node->data.flattens_inherited_transform = data_for_children->should_flatten;
321
322 if (layer == data_from_ancestor.page_scale_layer)
323 data_for_children->in_subtree_of_page_scale_layer = true;
321 node->data.in_subtree_of_page_scale_layer = 324 node->data.in_subtree_of_page_scale_layer =
322 data_for_children->in_subtree_of_page_scale_layer; 325 data_for_children->in_subtree_of_page_scale_layer;
323 326
324 // Surfaces inherently flatten transforms. 327 // Surfaces inherently flatten transforms.
325 data_for_children->should_flatten = 328 data_for_children->should_flatten =
326 layer->should_flatten_transform() || has_surface; 329 layer->should_flatten_transform() || has_surface;
327 DCHECK_GT(data_from_ancestor.effect_tree->size(), 0u); 330 DCHECK_GT(data_from_ancestor.effect_tree->size(), 0u);
328 331
329 node->data.target_id = 332 node->data.target_id =
330 data_for_children->effect_tree->Node(data_from_ancestor.render_target) 333 data_for_children->effect_tree->Node(data_from_ancestor.render_target)
(...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after
621 data_for_children->axis_align_since_render_target = true; 624 data_for_children->axis_align_since_render_target = true;
622 } 625 }
623 return should_create_render_surface; 626 return should_create_render_surface;
624 } 627 }
625 628
626 template <typename LayerType> 629 template <typename LayerType>
627 void BuildPropertyTreesInternal( 630 void BuildPropertyTreesInternal(
628 LayerType* layer, 631 LayerType* layer,
629 const DataForRecursion<LayerType>& data_from_parent) { 632 const DataForRecursion<LayerType>& data_from_parent) {
630 layer->set_property_tree_sequence_number(data_from_parent.sequence_number); 633 layer->set_property_tree_sequence_number(data_from_parent.sequence_number);
634 if (layer->mask_layer())
635 layer->mask_layer()->set_property_tree_sequence_number(
636 data_from_parent.sequence_number);
637
631 DataForRecursion<LayerType> data_for_children(data_from_parent); 638 DataForRecursion<LayerType> data_for_children(data_from_parent);
632 639
633 bool created_render_surface = 640 bool created_render_surface =
634 AddEffectNodeIfNeeded(data_from_parent, layer, &data_for_children); 641 AddEffectNodeIfNeeded(data_from_parent, layer, &data_for_children);
635 642
636 if (created_render_surface) { 643 if (created_render_surface) {
637 data_for_children.render_target = data_for_children.effect_tree_parent; 644 data_for_children.render_target = data_for_children.effect_tree_parent;
638 layer->set_draw_blend_mode(SkXfermode::kSrcOver_Mode); 645 layer->set_draw_blend_mode(SkXfermode::kSrcOver_Mode);
639 } else { 646 } else {
640 layer->set_draw_blend_mode(layer->blend_mode()); 647 layer->set_draw_blend_mode(layer->blend_mode());
641 } 648 }
642 649
643 bool created_transform_node = AddTransformNodeIfNeeded( 650 bool created_transform_node = AddTransformNodeIfNeeded(
644 data_from_parent, layer, created_render_surface, &data_for_children); 651 data_from_parent, layer, created_render_surface, &data_for_children);
645 AddClipNodeIfNeeded(data_from_parent, layer, created_render_surface, 652 AddClipNodeIfNeeded(data_from_parent, layer, created_render_surface,
646 created_transform_node, &data_for_children); 653 created_transform_node, &data_for_children);
647 654
648 if (layer == data_from_parent.page_scale_layer)
649 data_for_children.in_subtree_of_page_scale_layer = true;
650
651 data_for_children.is_hidden = 655 data_for_children.is_hidden =
652 layer->hide_layer_and_subtree() || data_from_parent.is_hidden; 656 layer->hide_layer_and_subtree() || data_from_parent.is_hidden;
653 layer->set_is_hidden_from_property_trees(data_for_children.is_hidden); 657 layer->set_is_hidden_from_property_trees(data_for_children.is_hidden);
654 658
655 for (size_t i = 0; i < layer->children().size(); ++i) { 659 for (size_t i = 0; i < layer->children().size(); ++i) {
656 if (!layer->child_at(i)->scroll_parent()) { 660 if (!layer->child_at(i)->scroll_parent()) {
657 BuildPropertyTreesInternal(layer->child_at(i), data_for_children); 661 BuildPropertyTreesInternal(layer->child_at(i), data_for_children);
658 } else { 662 } else {
659 // The child should be included in its scroll parent's list of scroll 663 // The child should be included in its scroll parent's list of scroll
660 // children. 664 // children.
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
785 const gfx::Transform& device_transform, 789 const gfx::Transform& device_transform,
786 PropertyTrees* property_trees) { 790 PropertyTrees* property_trees) {
787 BuildPropertyTreesTopLevelInternal( 791 BuildPropertyTreesTopLevelInternal(
788 root_layer, page_scale_layer, inner_viewport_scroll_layer, 792 root_layer, page_scale_layer, inner_viewport_scroll_layer,
789 outer_viewport_scroll_layer, overscroll_elasticity_layer, 793 outer_viewport_scroll_layer, overscroll_elasticity_layer,
790 elastic_overscroll, page_scale_factor, device_scale_factor, viewport, 794 elastic_overscroll, page_scale_factor, device_scale_factor, viewport,
791 device_transform, property_trees); 795 device_transform, property_trees);
792 } 796 }
793 797
794 } // namespace cc 798 } // namespace cc
OLDNEW
« no previous file with comments | « cc/layers/picture_layer_impl_unittest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698