| 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 |