| 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 706 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 717 // animations into their own trees. Then scrolls and animations would have | 717 // animations into their own trees. Then scrolls and animations would have |
| 718 // their own ways of synchronizing across commits. This occurs to push | 718 // their own ways of synchronizing across commits. This occurs to push |
| 719 // updates from scrolling deltas on the compositor thread that have occurred | 719 // updates from scrolling deltas on the compositor thread that have occurred |
| 720 // after begin frame and updates from animations that have ticked since begin | 720 // after begin frame and updates from animations that have ticked since begin |
| 721 // frame to a newly-committed property tree. | 721 // frame to a newly-committed property tree. |
| 722 if (layer_list_.empty()) | 722 if (layer_list_.empty()) |
| 723 return; | 723 return; |
| 724 std::vector<int> layer_ids_to_remove; | 724 std::vector<int> layer_ids_to_remove; |
| 725 for (auto& layer_id_to_opacity : opacity_animations_map_) { | 725 for (auto& layer_id_to_opacity : opacity_animations_map_) { |
| 726 const int id = layer_id_to_opacity.first; | 726 const int id = layer_id_to_opacity.first; |
| 727 if (property_trees_.IsInIdToIndexMap(PropertyTrees::TreeType::EFFECT, id)) { | 727 if (EffectNode* node = property_trees_.effect_tree.FindNodeFromId(id)) { |
| 728 EffectNode* node = property_trees_.effect_tree.Node( | |
| 729 property_trees_.layer_id_to_effect_node_index[id]); | |
| 730 if (!node->is_currently_animating_opacity || | 728 if (!node->is_currently_animating_opacity || |
| 731 node->opacity == layer_id_to_opacity.second) { | 729 node->opacity == layer_id_to_opacity.second) { |
| 732 layer_ids_to_remove.push_back(id); | 730 layer_ids_to_remove.push_back(id); |
| 733 continue; | 731 continue; |
| 734 } | 732 } |
| 735 node->opacity = layer_id_to_opacity.second; | 733 node->opacity = layer_id_to_opacity.second; |
| 736 property_trees_.effect_tree.set_needs_update(true); | 734 property_trees_.effect_tree.set_needs_update(true); |
| 737 } | 735 } |
| 738 } | 736 } |
| 739 for (auto id : layer_ids_to_remove) | 737 for (auto id : layer_ids_to_remove) |
| 740 opacity_animations_map_.erase(id); | 738 opacity_animations_map_.erase(id); |
| 741 layer_ids_to_remove.clear(); | 739 layer_ids_to_remove.clear(); |
| 742 | 740 |
| 743 for (auto& layer_id_to_transform : transform_animations_map_) { | 741 for (auto& layer_id_to_transform : transform_animations_map_) { |
| 744 const int id = layer_id_to_transform.first; | 742 const int id = layer_id_to_transform.first; |
| 745 if (property_trees_.IsInIdToIndexMap(PropertyTrees::TreeType::TRANSFORM, | 743 if (TransformNode* node = |
| 746 id)) { | 744 property_trees_.transform_tree.FindNodeFromId(id)) { |
| 747 TransformNode* node = property_trees_.transform_tree.Node( | |
| 748 property_trees_.layer_id_to_transform_node_index[id]); | |
| 749 if (!node->is_currently_animating || | 745 if (!node->is_currently_animating || |
| 750 node->local == layer_id_to_transform.second) { | 746 node->local == layer_id_to_transform.second) { |
| 751 layer_ids_to_remove.push_back(id); | 747 layer_ids_to_remove.push_back(id); |
| 752 continue; | 748 continue; |
| 753 } | 749 } |
| 754 node->local = layer_id_to_transform.second; | 750 node->local = layer_id_to_transform.second; |
| 755 node->needs_local_transform_update = true; | 751 node->needs_local_transform_update = true; |
| 756 property_trees_.transform_tree.set_needs_update(true); | 752 property_trees_.transform_tree.set_needs_update(true); |
| 757 } | 753 } |
| 758 } | 754 } |
| 759 for (auto id : layer_ids_to_remove) | 755 for (auto id : layer_ids_to_remove) |
| 760 transform_animations_map_.erase(id); | 756 transform_animations_map_.erase(id); |
| 761 layer_ids_to_remove.clear(); | 757 layer_ids_to_remove.clear(); |
| 762 | 758 |
| 763 for (auto& layer_id_to_filters : filter_animations_map_) { | 759 for (auto& layer_id_to_filters : filter_animations_map_) { |
| 764 const int id = layer_id_to_filters.first; | 760 const int id = layer_id_to_filters.first; |
| 765 if (property_trees_.IsInIdToIndexMap(PropertyTrees::TreeType::EFFECT, id)) { | 761 if (EffectNode* node = property_trees_.effect_tree.FindNodeFromId(id)) { |
| 766 EffectNode* node = property_trees_.effect_tree.Node( | |
| 767 property_trees_.layer_id_to_effect_node_index[id]); | |
| 768 if (!node->is_currently_animating_filter || | 762 if (!node->is_currently_animating_filter || |
| 769 node->filters == layer_id_to_filters.second) { | 763 node->filters == layer_id_to_filters.second) { |
| 770 layer_ids_to_remove.push_back(id); | 764 layer_ids_to_remove.push_back(id); |
| 771 continue; | 765 continue; |
| 772 } | 766 } |
| 773 node->filters = layer_id_to_filters.second; | 767 node->filters = layer_id_to_filters.second; |
| 774 property_trees_.effect_tree.set_needs_update(true); | 768 property_trees_.effect_tree.set_needs_update(true); |
| 775 } | 769 } |
| 776 } | 770 } |
| 777 for (auto id : layer_ids_to_remove) | 771 for (auto id : layer_ids_to_remove) |
| (...skipping 1371 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2149 | 2143 |
| 2150 void LayerTreeImpl::ResetAllChangeTracking() { | 2144 void LayerTreeImpl::ResetAllChangeTracking() { |
| 2151 layers_that_should_push_properties_.clear(); | 2145 layers_that_should_push_properties_.clear(); |
| 2152 // Iterate over all layers, including masks. | 2146 // Iterate over all layers, including masks. |
| 2153 for (auto& layer : *layers_) | 2147 for (auto& layer : *layers_) |
| 2154 layer->ResetChangeTracking(); | 2148 layer->ResetChangeTracking(); |
| 2155 property_trees_.ResetAllChangeTracking(); | 2149 property_trees_.ResetAllChangeTracking(); |
| 2156 } | 2150 } |
| 2157 | 2151 |
| 2158 } // namespace cc | 2152 } // namespace cc |
| OLD | NEW |