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 450 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
461 } | 461 } |
462 | 462 |
463 LayerListReverseIterator<LayerImpl> LayerTreeImpl::rbegin() { | 463 LayerListReverseIterator<LayerImpl> LayerTreeImpl::rbegin() { |
464 return LayerListReverseIterator<LayerImpl>(root_layer_); | 464 return LayerListReverseIterator<LayerImpl>(root_layer_); |
465 } | 465 } |
466 | 466 |
467 LayerListReverseIterator<LayerImpl> LayerTreeImpl::rend() { | 467 LayerListReverseIterator<LayerImpl> LayerTreeImpl::rend() { |
468 return LayerListReverseIterator<LayerImpl>(nullptr); | 468 return LayerListReverseIterator<LayerImpl>(nullptr); |
469 } | 469 } |
470 | 470 |
471 LayerImpl* LayerTreeImpl::LayerByElementId(ElementId element_id) const { | |
472 auto iter = element_layers_map_.find(element_id); | |
473 if (iter == element_layers_map_.end()) | |
474 return nullptr; | |
475 | |
476 return iter->second; | |
477 } | |
478 | |
479 void LayerTreeImpl::AddToElementMap(LayerImpl* layer) { | 471 void LayerTreeImpl::AddToElementMap(LayerImpl* layer) { |
480 if (!layer->element_id()) | 472 if (!layer->element_id() || !layer->mutable_properties()) |
481 return; | 473 return; |
482 | 474 |
483 TRACE_EVENT2(TRACE_DISABLED_BY_DEFAULT("compositor-worker"), | 475 TRACE_EVENT2(TRACE_DISABLED_BY_DEFAULT("compositor-worker"), |
484 "LayerTreeImpl::AddToElementMap", "element", | 476 "LayerTreeImpl::AddToElementMap", "element_id", |
485 layer->element_id().AsValue().release(), "layer_id", | 477 layer->element_id(), "layer_id", layer->id()); |
486 layer->id()); | |
487 | 478 |
488 element_layers_map_[layer->element_id()] = layer; | 479 ElementLayers& layers = element_layers_map_[layer->element_id()]; |
489 | 480 if ((!layers.main || layer->IsActive()) && !layer->scrollable()) { |
490 layer_tree_host_impl_->animation_host()->RegisterElement( | 481 layers.main = layer; |
491 layer->element_id(), | 482 } else if ((!layers.scroll || layer->IsActive()) && layer->scrollable()) { |
492 IsActiveTree() ? ElementListType::ACTIVE : ElementListType::PENDING); | 483 TRACE_EVENT2("compositor-worker", "LayerTreeImpl::AddToElementMap scroll", |
| 484 "element_id", layer->element_id(), "layer_id", layer->id()); |
| 485 layers.scroll = layer; |
| 486 } |
493 } | 487 } |
494 | 488 |
495 void LayerTreeImpl::RemoveFromElementMap(LayerImpl* layer) { | 489 void LayerTreeImpl::RemoveFromElementMap(LayerImpl* layer) { |
496 if (!layer->element_id()) | 490 if (!layer->element_id()) |
497 return; | 491 return; |
498 | 492 |
499 TRACE_EVENT2(TRACE_DISABLED_BY_DEFAULT("compositor-worker"), | 493 TRACE_EVENT2(TRACE_DISABLED_BY_DEFAULT("compositor-worker"), |
500 "LayerTreeImpl::RemoveFromElementMap", "element", | 494 "LayerTreeImpl::RemoveFromElementMap", "element_id", |
501 layer->element_id().AsValue().release(), "layer_id", | 495 layer->element_id(), "layer_id", layer->id()); |
502 layer->id()); | |
503 | 496 |
504 layer_tree_host_impl_->animation_host()->UnregisterElement( | 497 ElementLayers& layers = element_layers_map_[layer->element_id()]; |
505 layer->element_id(), | 498 if (!layer->scrollable()) |
506 IsActiveTree() ? ElementListType::ACTIVE : ElementListType::PENDING); | 499 layers.main = nullptr; |
| 500 if (layer->scrollable()) |
| 501 layers.scroll = nullptr; |
507 | 502 |
508 element_layers_map_.erase(layer->element_id()); | 503 if (!layers.main && !layers.scroll) |
| 504 element_layers_map_.erase(layer->element_id()); |
509 } | 505 } |
510 | 506 |
511 void LayerTreeImpl::AddToOpacityAnimationsMap(int id, float opacity) { | 507 void LayerTreeImpl::AddToOpacityAnimationsMap(int id, float opacity) { |
512 opacity_animations_map_[id] = opacity; | 508 opacity_animations_map_[id] = opacity; |
513 } | 509 } |
514 | 510 |
515 void LayerTreeImpl::AddToTransformAnimationsMap(int id, | 511 void LayerTreeImpl::AddToTransformAnimationsMap(int id, |
516 gfx::Transform transform) { | 512 gfx::Transform transform) { |
517 transform_animations_map_[id] = transform; | 513 transform_animations_map_[id] = transform; |
518 } | 514 } |
519 | 515 |
| 516 LayerTreeImpl::ElementLayers LayerTreeImpl::GetMutableLayers( |
| 517 uint64_t element_id) { |
| 518 auto iter = element_layers_map_.find(element_id); |
| 519 if (iter == element_layers_map_.end()) |
| 520 return ElementLayers(); |
| 521 |
| 522 return iter->second; |
| 523 } |
| 524 |
520 LayerImpl* LayerTreeImpl::InnerViewportContainerLayer() const { | 525 LayerImpl* LayerTreeImpl::InnerViewportContainerLayer() const { |
521 return InnerViewportScrollLayer() | 526 return InnerViewportScrollLayer() |
522 ? InnerViewportScrollLayer()->scroll_clip_layer() | 527 ? InnerViewportScrollLayer()->scroll_clip_layer() |
523 : NULL; | 528 : NULL; |
524 } | 529 } |
525 | 530 |
526 LayerImpl* LayerTreeImpl::OuterViewportContainerLayer() const { | 531 LayerImpl* LayerTreeImpl::OuterViewportContainerLayer() const { |
527 return OuterViewportScrollLayer() | 532 return OuterViewportScrollLayer() |
528 ? OuterViewportScrollLayer()->scroll_clip_layer() | 533 ? OuterViewportScrollLayer()->scroll_clip_layer() |
529 : NULL; | 534 : NULL; |
(...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
808 outer_viewport_scroll_layer_id_ = outer_viewport_scroll_layer_id; | 813 outer_viewport_scroll_layer_id_ = outer_viewport_scroll_layer_id; |
809 } | 814 } |
810 | 815 |
811 void LayerTreeImpl::ClearViewportLayers() { | 816 void LayerTreeImpl::ClearViewportLayers() { |
812 overscroll_elasticity_layer_id_ = Layer::INVALID_ID; | 817 overscroll_elasticity_layer_id_ = Layer::INVALID_ID; |
813 page_scale_layer_id_ = Layer::INVALID_ID; | 818 page_scale_layer_id_ = Layer::INVALID_ID; |
814 inner_viewport_scroll_layer_id_ = Layer::INVALID_ID; | 819 inner_viewport_scroll_layer_id_ = Layer::INVALID_ID; |
815 outer_viewport_scroll_layer_id_ = Layer::INVALID_ID; | 820 outer_viewport_scroll_layer_id_ = Layer::INVALID_ID; |
816 } | 821 } |
817 | 822 |
818 // For unit tests, we use the layer's id as its element id. | |
819 static void SetElementIdForTesting(LayerImpl* layer) { | |
820 layer->SetElementId(LayerIdToElementIdForTesting(layer->id())); | |
821 } | |
822 | |
823 void LayerTreeImpl::SetElementIdsForTesting() { | |
824 LayerTreeHostCommon::CallFunctionForEveryLayer(this, SetElementIdForTesting); | |
825 } | |
826 | |
827 bool LayerTreeImpl::UpdateDrawProperties(bool update_lcd_text) { | 823 bool LayerTreeImpl::UpdateDrawProperties(bool update_lcd_text) { |
828 if (!needs_update_draw_properties_) | 824 if (!needs_update_draw_properties_) |
829 return true; | 825 return true; |
830 | 826 |
831 // Calling UpdateDrawProperties must clear this flag, so there can be no | 827 // Calling UpdateDrawProperties must clear this flag, so there can be no |
832 // early outs before this. | 828 // early outs before this. |
833 needs_update_draw_properties_ = false; | 829 needs_update_draw_properties_ = false; |
834 | 830 |
835 // For max_texture_size. When the renderer is re-created in | 831 // For max_texture_size. When the renderer is re-created in |
836 // CreateAndSetRenderer, the needs update draw properties flag is set | 832 // CreateAndSetRenderer, the needs update draw properties flag is set |
(...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1049 } | 1045 } |
1050 | 1046 |
1051 bool LayerTreeImpl::LayerNeedsPushPropertiesForTesting(LayerImpl* layer) { | 1047 bool LayerTreeImpl::LayerNeedsPushPropertiesForTesting(LayerImpl* layer) { |
1052 return layers_that_should_push_properties_.find(layer) != | 1048 return layers_that_should_push_properties_.find(layer) != |
1053 layers_that_should_push_properties_.end(); | 1049 layers_that_should_push_properties_.end(); |
1054 } | 1050 } |
1055 | 1051 |
1056 void LayerTreeImpl::RegisterLayer(LayerImpl* layer) { | 1052 void LayerTreeImpl::RegisterLayer(LayerImpl* layer) { |
1057 DCHECK(!LayerById(layer->id())); | 1053 DCHECK(!LayerById(layer->id())); |
1058 layer_id_map_[layer->id()] = layer; | 1054 layer_id_map_[layer->id()] = layer; |
| 1055 layer_tree_host_impl_->animation_host()->RegisterElement( |
| 1056 layer->id(), |
| 1057 IsActiveTree() ? ElementListType::ACTIVE : ElementListType::PENDING); |
1059 } | 1058 } |
1060 | 1059 |
1061 void LayerTreeImpl::UnregisterLayer(LayerImpl* layer) { | 1060 void LayerTreeImpl::UnregisterLayer(LayerImpl* layer) { |
1062 DCHECK(LayerById(layer->id())); | 1061 DCHECK(LayerById(layer->id())); |
| 1062 layer_tree_host_impl_->animation_host()->UnregisterElement( |
| 1063 layer->id(), |
| 1064 IsActiveTree() ? ElementListType::ACTIVE : ElementListType::PENDING); |
1063 layer_id_map_.erase(layer->id()); | 1065 layer_id_map_.erase(layer->id()); |
1064 DCHECK_NE(root_layer_, layer); | 1066 DCHECK_NE(root_layer_, layer); |
1065 } | 1067 } |
1066 | 1068 |
1067 // These manage ownership of the LayerImpl. | 1069 // These manage ownership of the LayerImpl. |
1068 void LayerTreeImpl::AddLayer(std::unique_ptr<LayerImpl> layer) { | 1070 void LayerTreeImpl::AddLayer(std::unique_ptr<LayerImpl> layer) { |
1069 DCHECK(std::find(layers_->begin(), layers_->end(), layer) == layers_->end()); | 1071 DCHECK(std::find(layers_->begin(), layers_->end(), layer) == layers_->end()); |
1070 layers_->push_back(std::move(layer)); | 1072 layers_->push_back(std::move(layer)); |
1071 set_needs_update_draw_properties(); | 1073 set_needs_update_draw_properties(); |
1072 } | 1074 } |
(...skipping 869 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1942 | 1944 |
1943 std::unique_ptr<PendingPageScaleAnimation> | 1945 std::unique_ptr<PendingPageScaleAnimation> |
1944 LayerTreeImpl::TakePendingPageScaleAnimation() { | 1946 LayerTreeImpl::TakePendingPageScaleAnimation() { |
1945 return std::move(pending_page_scale_animation_); | 1947 return std::move(pending_page_scale_animation_); |
1946 } | 1948 } |
1947 | 1949 |
1948 bool LayerTreeImpl::IsAnimatingFilterProperty(const LayerImpl* layer) const { | 1950 bool LayerTreeImpl::IsAnimatingFilterProperty(const LayerImpl* layer) const { |
1949 ElementListType list_type = | 1951 ElementListType list_type = |
1950 IsActiveTree() ? ElementListType::ACTIVE : ElementListType::PENDING; | 1952 IsActiveTree() ? ElementListType::ACTIVE : ElementListType::PENDING; |
1951 return layer_tree_host_impl_->animation_host()->IsAnimatingFilterProperty( | 1953 return layer_tree_host_impl_->animation_host()->IsAnimatingFilterProperty( |
1952 layer->element_id(), list_type); | 1954 layer->id(), list_type); |
1953 } | 1955 } |
1954 | 1956 |
1955 bool LayerTreeImpl::IsAnimatingOpacityProperty(const LayerImpl* layer) const { | 1957 bool LayerTreeImpl::IsAnimatingOpacityProperty(const LayerImpl* layer) const { |
1956 ElementListType list_type = | 1958 ElementListType list_type = |
1957 IsActiveTree() ? ElementListType::ACTIVE : ElementListType::PENDING; | 1959 IsActiveTree() ? ElementListType::ACTIVE : ElementListType::PENDING; |
1958 return layer_tree_host_impl_->animation_host()->IsAnimatingOpacityProperty( | 1960 return layer_tree_host_impl_->animation_host()->IsAnimatingOpacityProperty( |
1959 layer->element_id(), list_type); | 1961 layer->id(), list_type); |
1960 } | 1962 } |
1961 | 1963 |
1962 bool LayerTreeImpl::IsAnimatingTransformProperty(const LayerImpl* layer) const { | 1964 bool LayerTreeImpl::IsAnimatingTransformProperty(const LayerImpl* layer) const { |
1963 ElementListType list_type = | 1965 ElementListType list_type = |
1964 IsActiveTree() ? ElementListType::ACTIVE : ElementListType::PENDING; | 1966 IsActiveTree() ? ElementListType::ACTIVE : ElementListType::PENDING; |
1965 return layer_tree_host_impl_->animation_host()->IsAnimatingTransformProperty( | 1967 return layer_tree_host_impl_->animation_host()->IsAnimatingTransformProperty( |
1966 layer->element_id(), list_type); | 1968 layer->id(), list_type); |
1967 } | 1969 } |
1968 | 1970 |
1969 bool LayerTreeImpl::HasPotentiallyRunningFilterAnimation( | 1971 bool LayerTreeImpl::HasPotentiallyRunningFilterAnimation( |
1970 const LayerImpl* layer) const { | 1972 const LayerImpl* layer) const { |
1971 ElementListType list_type = | 1973 ElementListType list_type = |
1972 IsActiveTree() ? ElementListType::ACTIVE : ElementListType::PENDING; | 1974 IsActiveTree() ? ElementListType::ACTIVE : ElementListType::PENDING; |
1973 return layer_tree_host_impl_->animation_host() | 1975 return layer_tree_host_impl_->animation_host() |
1974 ->HasPotentiallyRunningFilterAnimation(layer->element_id(), list_type); | 1976 ->HasPotentiallyRunningFilterAnimation(layer->id(), list_type); |
1975 } | 1977 } |
1976 | 1978 |
1977 bool LayerTreeImpl::HasPotentiallyRunningOpacityAnimation( | 1979 bool LayerTreeImpl::HasPotentiallyRunningOpacityAnimation( |
1978 const LayerImpl* layer) const { | 1980 const LayerImpl* layer) const { |
1979 ElementListType list_type = | 1981 ElementListType list_type = |
1980 IsActiveTree() ? ElementListType::ACTIVE : ElementListType::PENDING; | 1982 IsActiveTree() ? ElementListType::ACTIVE : ElementListType::PENDING; |
1981 return layer_tree_host_impl_->animation_host() | 1983 return layer_tree_host_impl_->animation_host() |
1982 ->HasPotentiallyRunningOpacityAnimation(layer->element_id(), list_type); | 1984 ->HasPotentiallyRunningOpacityAnimation(layer->id(), list_type); |
1983 } | 1985 } |
1984 | 1986 |
1985 bool LayerTreeImpl::HasPotentiallyRunningTransformAnimation( | 1987 bool LayerTreeImpl::HasPotentiallyRunningTransformAnimation( |
1986 const LayerImpl* layer) const { | 1988 const LayerImpl* layer) const { |
1987 ElementListType list_type = | 1989 ElementListType list_type = |
1988 IsActiveTree() ? ElementListType::ACTIVE : ElementListType::PENDING; | 1990 IsActiveTree() ? ElementListType::ACTIVE : ElementListType::PENDING; |
1989 return layer_tree_host_impl_->animation_host() | 1991 return layer_tree_host_impl_->animation_host() |
1990 ->HasPotentiallyRunningTransformAnimation(layer->element_id(), list_type); | 1992 ->HasPotentiallyRunningTransformAnimation(layer->id(), list_type); |
1991 } | 1993 } |
1992 | 1994 |
1993 bool LayerTreeImpl::HasAnyAnimationTargetingProperty( | 1995 bool LayerTreeImpl::HasAnyAnimationTargetingProperty( |
1994 const LayerImpl* layer, | 1996 const LayerImpl* layer, |
1995 TargetProperty::Type property) const { | 1997 TargetProperty::Type property) const { |
1996 return layer_tree_host_impl_->animation_host() | 1998 return layer_tree_host_impl_->animation_host() |
1997 ->HasAnyAnimationTargetingProperty(layer->element_id(), property); | 1999 ->HasAnyAnimationTargetingProperty(layer->id(), property); |
1998 } | 2000 } |
1999 | 2001 |
2000 bool LayerTreeImpl::AnimationsPreserveAxisAlignment( | 2002 bool LayerTreeImpl::AnimationsPreserveAxisAlignment( |
2001 const LayerImpl* layer) const { | 2003 const LayerImpl* layer) const { |
2002 return layer_tree_host_impl_->animation_host() | 2004 return layer_tree_host_impl_->animation_host() |
2003 ->AnimationsPreserveAxisAlignment(layer->element_id()); | 2005 ->AnimationsPreserveAxisAlignment(layer->id()); |
2004 } | 2006 } |
2005 | 2007 |
2006 bool LayerTreeImpl::HasOnlyTranslationTransforms(const LayerImpl* layer) const { | 2008 bool LayerTreeImpl::HasOnlyTranslationTransforms(const LayerImpl* layer) const { |
2007 ElementListType list_type = | 2009 ElementListType list_type = |
2008 IsActiveTree() ? ElementListType::ACTIVE : ElementListType::PENDING; | 2010 IsActiveTree() ? ElementListType::ACTIVE : ElementListType::PENDING; |
2009 return layer_tree_host_impl_->animation_host()->HasOnlyTranslationTransforms( | 2011 return layer_tree_host_impl_->animation_host()->HasOnlyTranslationTransforms( |
2010 layer->element_id(), list_type); | 2012 layer->id(), list_type); |
2011 } | 2013 } |
2012 | 2014 |
2013 bool LayerTreeImpl::MaximumTargetScale(const LayerImpl* layer, | 2015 bool LayerTreeImpl::MaximumTargetScale(const LayerImpl* layer, |
2014 float* max_scale) const { | 2016 float* max_scale) const { |
2015 *max_scale = 0.f; | 2017 *max_scale = 0.f; |
2016 ElementListType list_type = | 2018 ElementListType list_type = |
2017 IsActiveTree() ? ElementListType::ACTIVE : ElementListType::PENDING; | 2019 IsActiveTree() ? ElementListType::ACTIVE : ElementListType::PENDING; |
2018 return layer_tree_host_impl_->animation_host()->MaximumTargetScale( | 2020 return layer_tree_host_impl_->animation_host()->MaximumTargetScale( |
2019 layer->element_id(), list_type, max_scale); | 2021 layer->id(), list_type, max_scale); |
2020 } | 2022 } |
2021 | 2023 |
2022 bool LayerTreeImpl::AnimationStartScale(const LayerImpl* layer, | 2024 bool LayerTreeImpl::AnimationStartScale(const LayerImpl* layer, |
2023 float* start_scale) const { | 2025 float* start_scale) const { |
2024 *start_scale = 0.f; | 2026 *start_scale = 0.f; |
2025 ElementListType list_type = | 2027 ElementListType list_type = |
2026 IsActiveTree() ? ElementListType::ACTIVE : ElementListType::PENDING; | 2028 IsActiveTree() ? ElementListType::ACTIVE : ElementListType::PENDING; |
2027 return layer_tree_host_impl_->animation_host()->AnimationStartScale( | 2029 return layer_tree_host_impl_->animation_host()->AnimationStartScale( |
2028 layer->element_id(), list_type, start_scale); | 2030 layer->id(), list_type, start_scale); |
2029 } | 2031 } |
2030 | 2032 |
2031 bool LayerTreeImpl::HasFilterAnimationThatInflatesBounds( | 2033 bool LayerTreeImpl::HasFilterAnimationThatInflatesBounds( |
2032 const LayerImpl* layer) const { | 2034 const LayerImpl* layer) const { |
2033 return layer_tree_host_impl_->animation_host() | 2035 return layer_tree_host_impl_->animation_host() |
2034 ->HasFilterAnimationThatInflatesBounds(layer->element_id()); | 2036 ->HasFilterAnimationThatInflatesBounds(layer->id()); |
2035 } | 2037 } |
2036 | 2038 |
2037 bool LayerTreeImpl::HasTransformAnimationThatInflatesBounds( | 2039 bool LayerTreeImpl::HasTransformAnimationThatInflatesBounds( |
2038 const LayerImpl* layer) const { | 2040 const LayerImpl* layer) const { |
2039 return layer_tree_host_impl_->animation_host() | 2041 return layer_tree_host_impl_->animation_host() |
2040 ->HasTransformAnimationThatInflatesBounds(layer->element_id()); | 2042 ->HasTransformAnimationThatInflatesBounds(layer->id()); |
2041 } | 2043 } |
2042 | 2044 |
2043 bool LayerTreeImpl::HasAnimationThatInflatesBounds( | 2045 bool LayerTreeImpl::HasAnimationThatInflatesBounds( |
2044 const LayerImpl* layer) const { | 2046 const LayerImpl* layer) const { |
2045 return layer_tree_host_impl_->animation_host() | 2047 return layer_tree_host_impl_->animation_host() |
2046 ->HasAnimationThatInflatesBounds(layer->element_id()); | 2048 ->HasAnimationThatInflatesBounds(layer->id()); |
2047 } | 2049 } |
2048 | 2050 |
2049 bool LayerTreeImpl::FilterAnimationBoundsForBox(const LayerImpl* layer, | 2051 bool LayerTreeImpl::FilterAnimationBoundsForBox(const LayerImpl* layer, |
2050 const gfx::BoxF& box, | 2052 const gfx::BoxF& box, |
2051 gfx::BoxF* bounds) const { | 2053 gfx::BoxF* bounds) const { |
2052 return layer_tree_host_impl_->animation_host()->FilterAnimationBoundsForBox( | 2054 return layer_tree_host_impl_->animation_host()->FilterAnimationBoundsForBox( |
2053 layer->element_id(), box, bounds); | 2055 layer->id(), box, bounds); |
2054 } | 2056 } |
2055 | 2057 |
2056 bool LayerTreeImpl::TransformAnimationBoundsForBox(const LayerImpl* layer, | 2058 bool LayerTreeImpl::TransformAnimationBoundsForBox(const LayerImpl* layer, |
2057 const gfx::BoxF& box, | 2059 const gfx::BoxF& box, |
2058 gfx::BoxF* bounds) const { | 2060 gfx::BoxF* bounds) const { |
2059 *bounds = gfx::BoxF(); | 2061 *bounds = gfx::BoxF(); |
2060 return layer_tree_host_impl_->animation_host() | 2062 return layer_tree_host_impl_->animation_host() |
2061 ->TransformAnimationBoundsForBox(layer->element_id(), box, bounds); | 2063 ->TransformAnimationBoundsForBox(layer->id(), box, bounds); |
2062 } | 2064 } |
2063 | 2065 |
2064 void LayerTreeImpl::ScrollAnimationAbort(bool needs_completion) { | 2066 void LayerTreeImpl::ScrollAnimationAbort(bool needs_completion) { |
2065 layer_tree_host_impl_->animation_host()->ScrollAnimationAbort( | 2067 layer_tree_host_impl_->animation_host()->ScrollAnimationAbort( |
2066 needs_completion); | 2068 needs_completion); |
2067 } | 2069 } |
2068 | 2070 |
2069 void LayerTreeImpl::ResetAllChangeTracking() { | 2071 void LayerTreeImpl::ResetAllChangeTracking() { |
2070 layers_that_should_push_properties_.clear(); | 2072 layers_that_should_push_properties_.clear(); |
2071 for (auto* layer : *this) | 2073 for (auto* layer : *this) |
2072 layer->ResetChangeTracking(); | 2074 layer->ResetChangeTracking(); |
2073 property_trees_.ResetAllChangeTracking(); | 2075 property_trees_.ResetAllChangeTracking(); |
2074 } | 2076 } |
2075 | 2077 |
2076 } // namespace cc | 2078 } // namespace cc |
OLD | NEW |