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_impl.h" | 5 #include "cc/trees/layer_tree_host_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 3876 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
3887 | 3887 |
3888 void LayerTreeHostImpl::SetMutatorsNeedRebuildPropertyTrees() {} | 3888 void LayerTreeHostImpl::SetMutatorsNeedRebuildPropertyTrees() {} |
3889 | 3889 |
3890 void LayerTreeHostImpl::SetTreeLayerFilterMutated( | 3890 void LayerTreeHostImpl::SetTreeLayerFilterMutated( |
3891 ElementId element_id, | 3891 ElementId element_id, |
3892 LayerTreeImpl* tree, | 3892 LayerTreeImpl* tree, |
3893 const FilterOperations& filters) { | 3893 const FilterOperations& filters) { |
3894 if (!tree) | 3894 if (!tree) |
3895 return; | 3895 return; |
3896 | 3896 |
3897 const int layer_id = tree->LayerIdByElementId(element_id); | 3897 const int effect_node_index = |
wkorman
2017/01/09 23:46:16
All unit and layout tests seem to pass (locally, C
ajuma
2017/01/10 00:39:11
What if we DCHECK before looking up? e.g.:
DCHECK(
wkorman
2017/01/10 21:34:12
Done.
| |
3898 DCHECK(tree->property_trees()->IsInIdToIndexMap( | 3898 tree->property_trees()->element_id_to_effect_node_index[element_id]; |
3899 PropertyTrees::TreeType::EFFECT, layer_id)); | 3899 tree->property_trees()->effect_tree.OnFilterAnimated(filters, |
3900 const int effect_id = | 3900 effect_node_index, tree); |
3901 tree->property_trees()->effect_id_to_index_map[layer_id]; | |
3902 if (effect_id != EffectTree::kInvalidNodeId) | |
3903 tree->property_trees()->effect_tree.OnFilterAnimated(filters, effect_id, | |
3904 tree); | |
3905 } | 3901 } |
3906 | 3902 |
3907 void LayerTreeHostImpl::SetTreeLayerOpacityMutated(ElementId element_id, | 3903 void LayerTreeHostImpl::SetTreeLayerOpacityMutated(ElementId element_id, |
3908 LayerTreeImpl* tree, | 3904 LayerTreeImpl* tree, |
3909 float opacity) { | 3905 float opacity) { |
3910 if (!tree) | 3906 if (!tree) |
3911 return; | 3907 return; |
3912 | 3908 |
3913 const int layer_id = tree->LayerIdByElementId(element_id); | 3909 const int effect_node_index = |
3914 DCHECK(tree->property_trees()->IsInIdToIndexMap( | 3910 tree->property_trees()->element_id_to_effect_node_index[element_id]; |
3915 PropertyTrees::TreeType::EFFECT, layer_id)); | 3911 tree->property_trees()->effect_tree.OnOpacityAnimated( |
3916 const int effect_id = | 3912 opacity, effect_node_index, tree); |
3917 tree->property_trees()->effect_id_to_index_map[layer_id]; | |
3918 if (effect_id != EffectTree::kInvalidNodeId) | |
3919 tree->property_trees()->effect_tree.OnOpacityAnimated(opacity, effect_id, | |
3920 tree); | |
3921 } | 3913 } |
3922 | 3914 |
3923 void LayerTreeHostImpl::SetTreeLayerTransformMutated( | 3915 void LayerTreeHostImpl::SetTreeLayerTransformMutated( |
3924 ElementId element_id, | 3916 ElementId element_id, |
3925 LayerTreeImpl* tree, | 3917 LayerTreeImpl* tree, |
3926 const gfx::Transform& transform) { | 3918 const gfx::Transform& transform) { |
3927 if (!tree) | 3919 if (!tree) |
3928 return; | 3920 return; |
3929 | 3921 |
3922 const int transform_node_index = | |
3923 tree->property_trees()->element_id_to_transform_node_index[element_id]; | |
3924 tree->property_trees()->transform_tree.OnTransformAnimated( | |
3925 transform, transform_node_index, tree); | |
3930 const int layer_id = tree->LayerIdByElementId(element_id); | 3926 const int layer_id = tree->LayerIdByElementId(element_id); |
ajuma
2017/01/10 00:39:11
You can use LayerByElementId here to get the layer
wkorman
2017/01/10 21:34:12
Done.
| |
3931 DCHECK(tree->property_trees()->IsInIdToIndexMap( | 3927 if (LayerImpl* layer = tree->LayerById(layer_id)) |
3932 PropertyTrees::TreeType::TRANSFORM, layer_id)); | |
3933 const int transform_id = | |
3934 tree->property_trees()->transform_id_to_index_map[layer_id]; | |
3935 if (transform_id != TransformTree::kInvalidNodeId) | |
3936 tree->property_trees()->transform_tree.OnTransformAnimated( | |
3937 transform, transform_id, tree); | |
3938 LayerImpl* layer = tree->LayerById(layer_id); | |
3939 if (layer) | |
3940 layer->set_was_ever_ready_since_last_transform_animation(false); | 3928 layer->set_was_ever_ready_since_last_transform_animation(false); |
3941 } | 3929 } |
3942 | 3930 |
3943 void LayerTreeHostImpl::SetTreeLayerScrollOffsetMutated( | 3931 void LayerTreeHostImpl::SetTreeLayerScrollOffsetMutated( |
3944 ElementId element_id, | 3932 ElementId element_id, |
3945 LayerTreeImpl* tree, | 3933 LayerTreeImpl* tree, |
3946 const gfx::ScrollOffset& scroll_offset) { | 3934 const gfx::ScrollOffset& scroll_offset) { |
3947 if (!tree) | 3935 if (!tree) |
3948 return; | 3936 return; |
3949 | 3937 |
3950 const int layer_id = tree->LayerIdByElementId(element_id); | 3938 const int layer_id = tree->LayerIdByElementId(element_id); |
3951 DCHECK(tree->property_trees()->IsInIdToIndexMap( | 3939 DCHECK(tree->property_trees()->IsInIdToIndexMap( |
3952 PropertyTrees::TreeType::TRANSFORM, layer_id)); | |
3953 DCHECK(tree->property_trees()->IsInIdToIndexMap( | |
3954 PropertyTrees::TreeType::SCROLL, layer_id)); | 3940 PropertyTrees::TreeType::SCROLL, layer_id)); |
3955 const int transform_id = | 3941 int transform_node_index = |
3956 tree->property_trees()->transform_id_to_index_map[layer_id]; | 3942 tree->property_trees()->element_id_to_transform_node_index[element_id]; |
3957 const int scroll_id = | 3943 // TODO(wkorman): Build map from element id to scroll node in property tree |
3944 // builder and make use of it below. | |
3945 const int scroll_node_index = | |
3958 tree->property_trees()->scroll_id_to_index_map[layer_id]; | 3946 tree->property_trees()->scroll_id_to_index_map[layer_id]; |
3959 if (transform_id != TransformTree::kInvalidNodeId && | 3947 if (scroll_node_index != ScrollTree::kInvalidNodeId) { |
3960 scroll_id != ScrollTree::kInvalidNodeId) { | |
3961 tree->property_trees()->scroll_tree.OnScrollOffsetAnimated( | 3948 tree->property_trees()->scroll_tree.OnScrollOffsetAnimated( |
3962 layer_id, transform_id, scroll_id, scroll_offset, tree); | 3949 layer_id, transform_node_index, scroll_node_index, scroll_offset, tree); |
3963 // Run mutation callbacks to respond to updated scroll offset. | 3950 // Run mutation callbacks to respond to updated scroll offset. |
3964 Mutate(CurrentBeginFrameArgs().frame_time); | 3951 Mutate(CurrentBeginFrameArgs().frame_time); |
3965 } | 3952 } |
3966 } | 3953 } |
3967 | 3954 |
3968 bool LayerTreeHostImpl::AnimationsPreserveAxisAlignment( | 3955 bool LayerTreeHostImpl::AnimationsPreserveAxisAlignment( |
3969 const LayerImpl* layer) const { | 3956 const LayerImpl* layer) const { |
3970 return mutator_host_->AnimationsPreserveAxisAlignment(layer->element_id()); | 3957 return mutator_host_->AnimationsPreserveAxisAlignment(layer->element_id()); |
3971 } | 3958 } |
3972 | 3959 |
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
4092 worker_context_visibility_ = | 4079 worker_context_visibility_ = |
4093 worker_context->CacheController()->ClientBecameVisible(); | 4080 worker_context->CacheController()->ClientBecameVisible(); |
4094 } else { | 4081 } else { |
4095 worker_context->CacheController()->ClientBecameNotVisible( | 4082 worker_context->CacheController()->ClientBecameNotVisible( |
4096 std::move(worker_context_visibility_)); | 4083 std::move(worker_context_visibility_)); |
4097 } | 4084 } |
4098 } | 4085 } |
4099 } | 4086 } |
4100 | 4087 |
4101 } // namespace cc | 4088 } // namespace cc |
OLD | NEW |