OLD | NEW |
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/draw_property_utils.h" | 5 #include "cc/trees/draw_property_utils.h" |
6 | 6 |
7 #include <vector> | 7 #include <vector> |
8 | 8 |
9 #include "cc/base/math_util.h" | 9 #include "cc/base/math_util.h" |
10 #include "cc/layers/draw_properties.h" | 10 #include "cc/layers/draw_properties.h" |
(...skipping 570 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
581 for (int i = 1; i < static_cast<int>(effect_tree->size()); ++i) | 581 for (int i = 1; i < static_cast<int>(effect_tree->size()); ++i) |
582 effect_tree->UpdateOpacities(i); | 582 effect_tree->UpdateOpacities(i); |
583 effect_tree->set_needs_update(false); | 583 effect_tree->set_needs_update(false); |
584 } | 584 } |
585 | 585 |
586 template <typename LayerType> | 586 template <typename LayerType> |
587 void ComputeVisibleRectsUsingPropertyTreesInternal( | 587 void ComputeVisibleRectsUsingPropertyTreesInternal( |
588 LayerType* root_layer, | 588 LayerType* root_layer, |
589 PropertyTrees* property_trees, | 589 PropertyTrees* property_trees, |
590 bool can_render_to_separate_surface, | 590 bool can_render_to_separate_surface, |
591 typename LayerType::LayerListType* update_layer_list) { | 591 typename LayerType::LayerListType* update_layer_list, |
| 592 std::vector<LayerType*>* visible_layer_list) { |
592 if (property_trees->non_root_surfaces_enabled != | 593 if (property_trees->non_root_surfaces_enabled != |
593 can_render_to_separate_surface) { | 594 can_render_to_separate_surface) { |
594 property_trees->non_root_surfaces_enabled = can_render_to_separate_surface; | 595 property_trees->non_root_surfaces_enabled = can_render_to_separate_surface; |
595 property_trees->transform_tree.set_needs_update(true); | 596 property_trees->transform_tree.set_needs_update(true); |
596 } | 597 } |
597 if (property_trees->transform_tree.needs_update()) | 598 if (property_trees->transform_tree.needs_update()) |
598 property_trees->clip_tree.set_needs_update(true); | 599 property_trees->clip_tree.set_needs_update(true); |
599 ComputeTransforms(&property_trees->transform_tree); | 600 ComputeTransforms(&property_trees->transform_tree); |
600 ComputeClips(&property_trees->clip_tree, property_trees->transform_tree, | 601 ComputeClips(&property_trees->clip_tree, property_trees->transform_tree, |
601 can_render_to_separate_surface); | 602 can_render_to_separate_surface); |
602 ComputeOpacities(&property_trees->effect_tree); | 603 ComputeOpacities(&property_trees->effect_tree); |
603 | 604 |
604 const bool subtree_is_visible_from_ancestor = true; | 605 const bool subtree_is_visible_from_ancestor = true; |
605 std::vector<LayerType*> visible_layer_list; | |
606 FindLayersThatNeedUpdates(root_layer, property_trees->transform_tree, | 606 FindLayersThatNeedUpdates(root_layer, property_trees->transform_tree, |
607 subtree_is_visible_from_ancestor, update_layer_list, | 607 subtree_is_visible_from_ancestor, update_layer_list, |
608 &visible_layer_list); | 608 visible_layer_list); |
609 CalculateVisibleRects<LayerType>( | 609 CalculateVisibleRects<LayerType>( |
610 visible_layer_list, property_trees->clip_tree, | 610 *visible_layer_list, property_trees->clip_tree, |
611 property_trees->transform_tree, can_render_to_separate_surface); | 611 property_trees->transform_tree, can_render_to_separate_surface); |
612 } | 612 } |
613 | 613 |
614 void BuildPropertyTreesAndComputeVisibleRects( | 614 void BuildPropertyTreesAndComputeVisibleRects( |
615 Layer* root_layer, | 615 Layer* root_layer, |
616 const Layer* page_scale_layer, | 616 const Layer* page_scale_layer, |
617 const Layer* inner_viewport_scroll_layer, | 617 const Layer* inner_viewport_scroll_layer, |
618 const Layer* outer_viewport_scroll_layer, | 618 const Layer* outer_viewport_scroll_layer, |
619 float page_scale_factor, | 619 float page_scale_factor, |
620 float device_scale_factor, | 620 float device_scale_factor, |
(...skipping 15 matching lines...) Expand all Loading... |
636 LayerImpl* root_layer, | 636 LayerImpl* root_layer, |
637 const LayerImpl* page_scale_layer, | 637 const LayerImpl* page_scale_layer, |
638 const LayerImpl* inner_viewport_scroll_layer, | 638 const LayerImpl* inner_viewport_scroll_layer, |
639 const LayerImpl* outer_viewport_scroll_layer, | 639 const LayerImpl* outer_viewport_scroll_layer, |
640 float page_scale_factor, | 640 float page_scale_factor, |
641 float device_scale_factor, | 641 float device_scale_factor, |
642 const gfx::Rect& viewport, | 642 const gfx::Rect& viewport, |
643 const gfx::Transform& device_transform, | 643 const gfx::Transform& device_transform, |
644 bool can_render_to_separate_surface, | 644 bool can_render_to_separate_surface, |
645 PropertyTrees* property_trees, | 645 PropertyTrees* property_trees, |
646 LayerImplList* update_layer_list) { | 646 LayerImplList* visible_layer_list) { |
647 PropertyTreeBuilder::BuildPropertyTrees( | 647 PropertyTreeBuilder::BuildPropertyTrees( |
648 root_layer, page_scale_layer, inner_viewport_scroll_layer, | 648 root_layer, page_scale_layer, inner_viewport_scroll_layer, |
649 outer_viewport_scroll_layer, page_scale_factor, device_scale_factor, | 649 outer_viewport_scroll_layer, page_scale_factor, device_scale_factor, |
650 viewport, device_transform, property_trees); | 650 viewport, device_transform, property_trees); |
651 ComputeVisibleRectsUsingPropertyTrees(root_layer, property_trees, | 651 ComputeVisibleRectsUsingPropertyTrees(root_layer, property_trees, |
652 can_render_to_separate_surface, | 652 can_render_to_separate_surface, |
653 update_layer_list); | 653 visible_layer_list); |
654 } | 654 } |
655 | 655 |
656 void ComputeVisibleRectsUsingPropertyTrees(Layer* root_layer, | 656 void ComputeVisibleRectsUsingPropertyTrees(Layer* root_layer, |
657 PropertyTrees* property_trees, | 657 PropertyTrees* property_trees, |
658 bool can_render_to_separate_surface, | 658 bool can_render_to_separate_surface, |
659 LayerList* update_layer_list) { | 659 LayerList* update_layer_list) { |
660 ComputeVisibleRectsUsingPropertyTreesInternal(root_layer, property_trees, | 660 std::vector<Layer*> visible_layer_list; |
661 can_render_to_separate_surface, | 661 ComputeVisibleRectsUsingPropertyTreesInternal( |
662 update_layer_list); | 662 root_layer, property_trees, can_render_to_separate_surface, |
| 663 update_layer_list, &visible_layer_list); |
663 } | 664 } |
664 | 665 |
665 void ComputeVisibleRectsUsingPropertyTrees(LayerImpl* root_layer, | 666 void ComputeVisibleRectsUsingPropertyTrees(LayerImpl* root_layer, |
666 PropertyTrees* property_trees, | 667 PropertyTrees* property_trees, |
667 bool can_render_to_separate_surface, | 668 bool can_render_to_separate_surface, |
668 LayerImplList* update_layer_list) { | 669 LayerImplList* visible_layer_list) { |
669 ComputeVisibleRectsUsingPropertyTreesInternal(root_layer, property_trees, | 670 LayerImplList update_layer_list; |
670 can_render_to_separate_surface, | 671 ComputeVisibleRectsUsingPropertyTreesInternal( |
671 update_layer_list); | 672 root_layer, property_trees, can_render_to_separate_surface, |
| 673 &update_layer_list, visible_layer_list); |
672 } | 674 } |
673 | 675 |
674 template <typename LayerType> | 676 template <typename LayerType> |
675 gfx::Transform DrawTransformFromPropertyTreesInternal( | 677 gfx::Transform DrawTransformFromPropertyTreesInternal( |
676 const LayerType* layer, | 678 const LayerType* layer, |
677 const TransformNode* node) { | 679 const TransformNode* node) { |
678 gfx::Transform xform; | 680 gfx::Transform xform; |
679 const bool owns_non_root_surface = | 681 const bool owns_non_root_surface = |
680 layer->parent() && layer->has_render_surface(); | 682 layer->parent() && layer->has_render_surface(); |
681 if (!owns_non_root_surface) { | 683 if (!owns_non_root_surface) { |
(...skipping 368 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1050 const Layer* page_scale_layer, | 1052 const Layer* page_scale_layer, |
1051 float page_scale_factor, | 1053 float page_scale_factor, |
1052 float device_scale_factor, | 1054 float device_scale_factor, |
1053 const gfx::Transform device_transform) { | 1055 const gfx::Transform device_transform) { |
1054 UpdatePageScaleFactorInPropertyTreesInternal( | 1056 UpdatePageScaleFactorInPropertyTreesInternal( |
1055 property_trees, page_scale_layer, page_scale_factor, device_scale_factor, | 1057 property_trees, page_scale_layer, page_scale_factor, device_scale_factor, |
1056 device_transform); | 1058 device_transform); |
1057 } | 1059 } |
1058 | 1060 |
1059 } // namespace cc | 1061 } // namespace cc |
OLD | NEW |