| OLD | NEW |
| 1 // Copyright 2011 The Chromium Authors. All rights reserved. | 1 // Copyright 2011 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/layer_tree_host_common.h" | 5 #include "cc/trees/layer_tree_host_common.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 | 10 |
| (...skipping 559 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 570 // |render_surface_layer_list| is the top level RenderSurfaceLayerList. | 570 // |render_surface_layer_list| is the top level RenderSurfaceLayerList. |
| 571 | 571 |
| 572 // |descendants| is used to determine what's in current layer's render | 572 // |descendants| is used to determine what's in current layer's render |
| 573 // surface's layer list. | 573 // surface's layer list. |
| 574 | 574 |
| 575 // |subtree_visible_from_ancestor| is set during recursion to affect current | 575 // |subtree_visible_from_ancestor| is set during recursion to affect current |
| 576 // layer's subtree. | 576 // layer's subtree. |
| 577 | 577 |
| 578 // |can_render_to_separate_surface| and |current_render_surface_layer_list_id| | 578 // |can_render_to_separate_surface| and |current_render_surface_layer_list_id| |
| 579 // are settings that should stay the same during recursion. | 579 // are settings that should stay the same during recursion. |
| 580 bool layer_is_drawn = false; | |
| 581 DCHECK_GE(layer->effect_tree_index(), 0); | 580 DCHECK_GE(layer->effect_tree_index(), 0); |
| 582 layer_is_drawn = property_trees->effect_tree.Node(layer->effect_tree_index()) | 581 bool layer_is_drawn = |
| 583 ->data.is_drawn; | 582 property_trees->is_active |
| 583 ? property_trees->effect_tree.Node(layer->effect_tree_index()) |
| 584 ->data.is_drawn_on_active |
| 585 : property_trees->effect_tree.Node(layer->effect_tree_index()) |
| 586 ->data.is_drawn_on_main_and_pending; |
| 584 | 587 |
| 585 // The root layer cannot be skipped. | 588 // The root layer cannot be skipped. |
| 586 if (!IsRootLayer(layer) && | 589 if (!IsRootLayer(layer) && |
| 587 draw_property_utils::LayerShouldBeSkipped(layer, layer_is_drawn, | 590 draw_property_utils::LayerShouldBeSkipped( |
| 588 property_trees->transform_tree, | 591 layer, property_trees->transform_tree, property_trees->effect_tree)) { |
| 589 property_trees->effect_tree)) { | |
| 590 if (layer->render_surface()) | 592 if (layer->render_surface()) |
| 591 layer->ClearRenderSurfaceLayerList(); | 593 layer->ClearRenderSurfaceLayerList(); |
| 592 for (auto* child_layer : layer->children()) { | 594 for (auto* child_layer : layer->children()) { |
| 593 CalculateRenderSurfaceLayerList( | 595 CalculateRenderSurfaceLayerList( |
| 594 child_layer, property_trees, render_surface_layer_list, descendants, | 596 child_layer, property_trees, render_surface_layer_list, descendants, |
| 595 nearest_occlusion_immune_ancestor, layer_is_drawn, | 597 nearest_occlusion_immune_ancestor, layer_is_drawn, |
| 596 can_render_to_separate_surface, current_render_surface_layer_list_id, | 598 can_render_to_separate_surface, current_render_surface_layer_list_id, |
| 597 max_texture_size); | 599 max_texture_size); |
| 598 | 600 |
| 599 MarkMasksAndAddChildToDescendantsIfRequired( | 601 MarkMasksAndAddChildToDescendantsIfRequired( |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 642 layer->ClearRenderSurfaceLayerList(); | 644 layer->ClearRenderSurfaceLayerList(); |
| 643 | 645 |
| 644 render_surface_layer_list->push_back(layer); | 646 render_surface_layer_list->push_back(layer); |
| 645 | 647 |
| 646 descendants = &(layer->render_surface()->layer_list()); | 648 descendants = &(layer->render_surface()->layer_list()); |
| 647 } | 649 } |
| 648 | 650 |
| 649 size_t descendants_size = descendants->size(); | 651 size_t descendants_size = descendants->size(); |
| 650 | 652 |
| 651 bool layer_should_be_skipped = !draw_property_utils::LayerNeedsUpdate( | 653 bool layer_should_be_skipped = !draw_property_utils::LayerNeedsUpdate( |
| 652 layer, layer_is_drawn, property_trees->transform_tree); | 654 layer, property_trees->transform_tree); |
| 653 if (!layer_should_be_skipped) { | 655 if (!layer_should_be_skipped) { |
| 654 MarkLayerWithRenderSurfaceLayerListId(layer, | 656 MarkLayerWithRenderSurfaceLayerListId(layer, |
| 655 current_render_surface_layer_list_id); | 657 current_render_surface_layer_list_id); |
| 656 descendants->push_back(layer); | 658 descendants->push_back(layer); |
| 657 } | 659 } |
| 658 | 660 |
| 659 | 661 |
| 660 // Clear the old accumulated content rect of surface. | 662 // Clear the old accumulated content rect of surface. |
| 661 if (render_to_separate_surface) | 663 if (render_to_separate_surface) |
| 662 layer->render_surface()->ClearAccumulatedContentRect(); | 664 layer->render_surface()->ClearAccumulatedContentRect(); |
| (...skipping 288 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 951 | 953 |
| 952 PropertyTrees* GetPropertyTrees(Layer* layer) { | 954 PropertyTrees* GetPropertyTrees(Layer* layer) { |
| 953 return layer->layer_tree_host()->property_trees(); | 955 return layer->layer_tree_host()->property_trees(); |
| 954 } | 956 } |
| 955 | 957 |
| 956 PropertyTrees* GetPropertyTrees(LayerImpl* layer) { | 958 PropertyTrees* GetPropertyTrees(LayerImpl* layer) { |
| 957 return layer->layer_tree_impl()->property_trees(); | 959 return layer->layer_tree_impl()->property_trees(); |
| 958 } | 960 } |
| 959 | 961 |
| 960 } // namespace cc | 962 } // namespace cc |
| OLD | NEW |