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_impl.h" | 5 #include "cc/trees/layer_tree_impl.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 | 9 |
10 #include <algorithm> | 10 #include <algorithm> |
(...skipping 644 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
655 // updates from scrolling deltas on the compositor thread that have occurred | 655 // updates from scrolling deltas on the compositor thread that have occurred |
656 // after begin frame and updates from animations that have ticked since begin | 656 // after begin frame and updates from animations that have ticked since begin |
657 // frame to a newly-committed property tree. | 657 // frame to a newly-committed property tree. |
658 if (layer_list_.empty()) | 658 if (layer_list_.empty()) |
659 return; | 659 return; |
660 std::vector<int> layer_ids_to_remove; | 660 std::vector<int> layer_ids_to_remove; |
661 for (auto& layer_id_to_opacity : opacity_animations_map_) { | 661 for (auto& layer_id_to_opacity : opacity_animations_map_) { |
662 const int id = layer_id_to_opacity.first; | 662 const int id = layer_id_to_opacity.first; |
663 if (property_trees_.IsInIdToIndexMap(PropertyTrees::TreeType::EFFECT, id)) { | 663 if (property_trees_.IsInIdToIndexMap(PropertyTrees::TreeType::EFFECT, id)) { |
664 EffectNode* node = property_trees_.effect_tree.Node( | 664 EffectNode* node = property_trees_.effect_tree.Node( |
665 property_trees_.effect_id_to_index_map[id]); | 665 property_trees_.layer_id_to_effect_node_index[id]); |
666 if (!node->is_currently_animating_opacity || | 666 if (!node->is_currently_animating_opacity || |
667 node->opacity == layer_id_to_opacity.second) { | 667 node->opacity == layer_id_to_opacity.second) { |
668 layer_ids_to_remove.push_back(id); | 668 layer_ids_to_remove.push_back(id); |
669 continue; | 669 continue; |
670 } | 670 } |
671 node->opacity = layer_id_to_opacity.second; | 671 node->opacity = layer_id_to_opacity.second; |
672 property_trees_.effect_tree.set_needs_update(true); | 672 property_trees_.effect_tree.set_needs_update(true); |
673 } | 673 } |
674 } | 674 } |
675 for (auto id : layer_ids_to_remove) | 675 for (auto id : layer_ids_to_remove) |
676 opacity_animations_map_.erase(id); | 676 opacity_animations_map_.erase(id); |
677 layer_ids_to_remove.clear(); | 677 layer_ids_to_remove.clear(); |
678 | 678 |
679 for (auto& layer_id_to_transform : transform_animations_map_) { | 679 for (auto& layer_id_to_transform : transform_animations_map_) { |
680 const int id = layer_id_to_transform.first; | 680 const int id = layer_id_to_transform.first; |
681 if (property_trees_.IsInIdToIndexMap(PropertyTrees::TreeType::TRANSFORM, | 681 if (property_trees_.IsInIdToIndexMap(PropertyTrees::TreeType::TRANSFORM, |
682 id)) { | 682 id)) { |
683 TransformNode* node = property_trees_.transform_tree.Node( | 683 TransformNode* node = property_trees_.transform_tree.Node( |
684 property_trees_.transform_id_to_index_map[id]); | 684 property_trees_.layer_id_to_transform_node_index[id]); |
685 if (!node->is_currently_animating || | 685 if (!node->is_currently_animating || |
686 node->local == layer_id_to_transform.second) { | 686 node->local == layer_id_to_transform.second) { |
687 layer_ids_to_remove.push_back(id); | 687 layer_ids_to_remove.push_back(id); |
688 continue; | 688 continue; |
689 } | 689 } |
690 node->local = layer_id_to_transform.second; | 690 node->local = layer_id_to_transform.second; |
691 node->needs_local_transform_update = true; | 691 node->needs_local_transform_update = true; |
692 property_trees_.transform_tree.set_needs_update(true); | 692 property_trees_.transform_tree.set_needs_update(true); |
693 } | 693 } |
694 } | 694 } |
695 for (auto id : layer_ids_to_remove) | 695 for (auto id : layer_ids_to_remove) |
696 transform_animations_map_.erase(id); | 696 transform_animations_map_.erase(id); |
697 layer_ids_to_remove.clear(); | 697 layer_ids_to_remove.clear(); |
698 | 698 |
699 for (auto& layer_id_to_filters : filter_animations_map_) { | 699 for (auto& layer_id_to_filters : filter_animations_map_) { |
700 const int id = layer_id_to_filters.first; | 700 const int id = layer_id_to_filters.first; |
701 if (property_trees_.IsInIdToIndexMap(PropertyTrees::TreeType::EFFECT, id)) { | 701 if (property_trees_.IsInIdToIndexMap(PropertyTrees::TreeType::EFFECT, id)) { |
702 EffectNode* node = property_trees_.effect_tree.Node( | 702 EffectNode* node = property_trees_.effect_tree.Node( |
703 property_trees_.effect_id_to_index_map[id]); | 703 property_trees_.layer_id_to_effect_node_index[id]); |
704 if (!node->is_currently_animating_filter || | 704 if (!node->is_currently_animating_filter || |
705 node->filters == layer_id_to_filters.second) { | 705 node->filters == layer_id_to_filters.second) { |
706 layer_ids_to_remove.push_back(id); | 706 layer_ids_to_remove.push_back(id); |
707 continue; | 707 continue; |
708 } | 708 } |
709 node->filters = layer_id_to_filters.second; | 709 node->filters = layer_id_to_filters.second; |
710 property_trees_.effect_tree.set_needs_update(true); | 710 property_trees_.effect_tree.set_needs_update(true); |
711 } | 711 } |
712 } | 712 } |
713 for (auto id : layer_ids_to_remove) | 713 for (auto id : layer_ids_to_remove) |
(...skipping 1370 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2084 | 2084 |
2085 void LayerTreeImpl::ResetAllChangeTracking() { | 2085 void LayerTreeImpl::ResetAllChangeTracking() { |
2086 layers_that_should_push_properties_.clear(); | 2086 layers_that_should_push_properties_.clear(); |
2087 // Iterate over all layers, including masks. | 2087 // Iterate over all layers, including masks. |
2088 for (auto& layer : *layers_) | 2088 for (auto& layer : *layers_) |
2089 layer->ResetChangeTracking(); | 2089 layer->ResetChangeTracking(); |
2090 property_trees_.ResetAllChangeTracking(); | 2090 property_trees_.ResetAllChangeTracking(); |
2091 } | 2091 } |
2092 | 2092 |
2093 } // namespace cc | 2093 } // namespace cc |
OLD | NEW |