Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(157)

Side by Side Diff: cc/trees/layer_tree_impl.cc

Issue 1973083002: Use element id's for animations (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « cc/trees/layer_tree_impl.h ('k') | cc/trees/mutator_host_client.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 469 matching lines...) Expand 10 before | Expand all | Expand 10 after
480 } 480 }
481 481
482 LayerImplList::reverse_iterator LayerTreeImpl::rbegin() { 482 LayerImplList::reverse_iterator LayerTreeImpl::rbegin() {
483 return layer_list_.rbegin(); 483 return layer_list_.rbegin();
484 } 484 }
485 485
486 LayerImplList::reverse_iterator LayerTreeImpl::rend() { 486 LayerImplList::reverse_iterator LayerTreeImpl::rend() {
487 return layer_list_.rend(); 487 return layer_list_.rend();
488 } 488 }
489 489
490 LayerImpl* LayerTreeImpl::LayerByElementId(ElementId element_id) const {
491 auto iter = element_layers_map_.find(element_id);
492 if (iter == element_layers_map_.end())
493 return nullptr;
494
495 return iter->second;
496 }
497
490 void LayerTreeImpl::AddToElementMap(LayerImpl* layer) { 498 void LayerTreeImpl::AddToElementMap(LayerImpl* layer) {
491 if (!layer->element_id() || !layer->mutable_properties()) 499 if (!layer->element_id())
492 return; 500 return;
493 501
494 TRACE_EVENT2(TRACE_DISABLED_BY_DEFAULT("compositor-worker"), 502 TRACE_EVENT2(TRACE_DISABLED_BY_DEFAULT("compositor-worker"),
495 "LayerTreeImpl::AddToElementMap", "element_id", 503 "LayerTreeImpl::AddToElementMap", "element",
496 layer->element_id(), "layer_id", layer->id()); 504 layer->element_id().AsValue().release(), "layer_id",
505 layer->id());
497 506
498 ElementLayers& layers = element_layers_map_[layer->element_id()]; 507 element_layers_map_[layer->element_id()] = layer;
499 if ((!layers.main || layer->IsActive()) && !layer->scrollable()) { 508
500 layers.main = layer; 509 layer_tree_host_impl_->animation_host()->RegisterElement(
501 } else if ((!layers.scroll || layer->IsActive()) && layer->scrollable()) { 510 layer->element_id(),
502 TRACE_EVENT2("compositor-worker", "LayerTreeImpl::AddToElementMap scroll", 511 IsActiveTree() ? ElementListType::ACTIVE : ElementListType::PENDING);
503 "element_id", layer->element_id(), "layer_id", layer->id());
504 layers.scroll = layer;
505 }
506 } 512 }
507 513
508 void LayerTreeImpl::RemoveFromElementMap(LayerImpl* layer) { 514 void LayerTreeImpl::RemoveFromElementMap(LayerImpl* layer) {
509 if (!layer->element_id()) 515 if (!layer->element_id())
510 return; 516 return;
511 517
512 TRACE_EVENT2(TRACE_DISABLED_BY_DEFAULT("compositor-worker"), 518 TRACE_EVENT2(TRACE_DISABLED_BY_DEFAULT("compositor-worker"),
513 "LayerTreeImpl::RemoveFromElementMap", "element_id", 519 "LayerTreeImpl::RemoveFromElementMap", "element",
514 layer->element_id(), "layer_id", layer->id()); 520 layer->element_id().AsValue().release(), "layer_id",
521 layer->id());
515 522
516 ElementLayers& layers = element_layers_map_[layer->element_id()]; 523 layer_tree_host_impl_->animation_host()->UnregisterElement(
517 if (!layer->scrollable()) 524 layer->element_id(),
518 layers.main = nullptr; 525 IsActiveTree() ? ElementListType::ACTIVE : ElementListType::PENDING);
519 if (layer->scrollable())
520 layers.scroll = nullptr;
521 526
522 if (!layers.main && !layers.scroll) 527 element_layers_map_.erase(layer->element_id());
523 element_layers_map_.erase(layer->element_id());
524 } 528 }
525 529
526 void LayerTreeImpl::AddToOpacityAnimationsMap(int id, float opacity) { 530 void LayerTreeImpl::AddToOpacityAnimationsMap(int id, float opacity) {
527 opacity_animations_map_[id] = opacity; 531 opacity_animations_map_[id] = opacity;
528 } 532 }
529 533
530 void LayerTreeImpl::AddToTransformAnimationsMap(int id, 534 void LayerTreeImpl::AddToTransformAnimationsMap(int id,
531 gfx::Transform transform) { 535 gfx::Transform transform) {
532 transform_animations_map_[id] = transform; 536 transform_animations_map_[id] = transform;
533 } 537 }
534 538
535 LayerTreeImpl::ElementLayers LayerTreeImpl::GetMutableLayers(
536 uint64_t element_id) {
537 auto iter = element_layers_map_.find(element_id);
538 if (iter == element_layers_map_.end())
539 return ElementLayers();
540
541 return iter->second;
542 }
543
544 LayerImpl* LayerTreeImpl::InnerViewportContainerLayer() const { 539 LayerImpl* LayerTreeImpl::InnerViewportContainerLayer() const {
545 return InnerViewportScrollLayer() 540 return InnerViewportScrollLayer()
546 ? InnerViewportScrollLayer()->scroll_clip_layer() 541 ? InnerViewportScrollLayer()->scroll_clip_layer()
547 : NULL; 542 : NULL;
548 } 543 }
549 544
550 LayerImpl* LayerTreeImpl::OuterViewportContainerLayer() const { 545 LayerImpl* LayerTreeImpl::OuterViewportContainerLayer() const {
551 return OuterViewportScrollLayer() 546 return OuterViewportScrollLayer()
552 ? OuterViewportScrollLayer()->scroll_clip_layer() 547 ? OuterViewportScrollLayer()->scroll_clip_layer()
553 : NULL; 548 : NULL;
(...skipping 287 matching lines...) Expand 10 before | Expand all | Expand 10 after
841 outer_viewport_scroll_layer_id_ = outer_viewport_scroll_layer_id; 836 outer_viewport_scroll_layer_id_ = outer_viewport_scroll_layer_id;
842 } 837 }
843 838
844 void LayerTreeImpl::ClearViewportLayers() { 839 void LayerTreeImpl::ClearViewportLayers() {
845 overscroll_elasticity_layer_id_ = Layer::INVALID_ID; 840 overscroll_elasticity_layer_id_ = Layer::INVALID_ID;
846 page_scale_layer_id_ = Layer::INVALID_ID; 841 page_scale_layer_id_ = Layer::INVALID_ID;
847 inner_viewport_scroll_layer_id_ = Layer::INVALID_ID; 842 inner_viewport_scroll_layer_id_ = Layer::INVALID_ID;
848 outer_viewport_scroll_layer_id_ = Layer::INVALID_ID; 843 outer_viewport_scroll_layer_id_ = Layer::INVALID_ID;
849 } 844 }
850 845
846 // For unit tests, we use the layer's id as its element id.
847 static void SetElementIdForTesting(LayerImpl* layer) {
848 layer->SetElementId(LayerIdToElementIdForTesting(layer->id()));
849 }
850
851 void LayerTreeImpl::SetElementIdsForTesting() {
852 LayerListIterator<LayerImpl> it(root_layer_for_testing_);
853 for (; it != LayerListIterator<LayerImpl>(nullptr); ++it) {
854 SetElementIdForTesting(*it);
855 }
856 }
857
851 bool LayerTreeImpl::UpdateDrawProperties(bool update_lcd_text) { 858 bool LayerTreeImpl::UpdateDrawProperties(bool update_lcd_text) {
852 if (!needs_update_draw_properties_) 859 if (!needs_update_draw_properties_)
853 return true; 860 return true;
854 861
855 // Calling UpdateDrawProperties must clear this flag, so there can be no 862 // Calling UpdateDrawProperties must clear this flag, so there can be no
856 // early outs before this. 863 // early outs before this.
857 needs_update_draw_properties_ = false; 864 needs_update_draw_properties_ = false;
858 865
859 // For max_texture_size. When the renderer is re-created in 866 // For max_texture_size. When the renderer is re-created in
860 // CreateAndSetRenderer, the needs update draw properties flag is set 867 // CreateAndSetRenderer, the needs update draw properties flag is set
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after
1075 } 1082 }
1076 1083
1077 bool LayerTreeImpl::LayerNeedsPushPropertiesForTesting(LayerImpl* layer) { 1084 bool LayerTreeImpl::LayerNeedsPushPropertiesForTesting(LayerImpl* layer) {
1078 return layers_that_should_push_properties_.find(layer) != 1085 return layers_that_should_push_properties_.find(layer) !=
1079 layers_that_should_push_properties_.end(); 1086 layers_that_should_push_properties_.end();
1080 } 1087 }
1081 1088
1082 void LayerTreeImpl::RegisterLayer(LayerImpl* layer) { 1089 void LayerTreeImpl::RegisterLayer(LayerImpl* layer) {
1083 DCHECK(!LayerById(layer->id())); 1090 DCHECK(!LayerById(layer->id()));
1084 layer_id_map_[layer->id()] = layer; 1091 layer_id_map_[layer->id()] = layer;
1085 layer_tree_host_impl_->animation_host()->RegisterElement(
1086 layer->id(),
1087 IsActiveTree() ? ElementListType::ACTIVE : ElementListType::PENDING);
1088 } 1092 }
1089 1093
1090 void LayerTreeImpl::UnregisterLayer(LayerImpl* layer) { 1094 void LayerTreeImpl::UnregisterLayer(LayerImpl* layer) {
1091 DCHECK(LayerById(layer->id())); 1095 DCHECK(LayerById(layer->id()));
1092 layer_tree_host_impl_->animation_host()->UnregisterElement(
1093 layer->id(),
1094 IsActiveTree() ? ElementListType::ACTIVE : ElementListType::PENDING);
1095 layer_id_map_.erase(layer->id()); 1096 layer_id_map_.erase(layer->id());
1096 } 1097 }
1097 1098
1098 // These manage ownership of the LayerImpl. 1099 // These manage ownership of the LayerImpl.
1099 void LayerTreeImpl::AddLayer(std::unique_ptr<LayerImpl> layer) { 1100 void LayerTreeImpl::AddLayer(std::unique_ptr<LayerImpl> layer) {
1100 DCHECK(std::find(layers_->begin(), layers_->end(), layer) == layers_->end()); 1101 DCHECK(std::find(layers_->begin(), layers_->end(), layer) == layers_->end());
1101 layers_->push_back(std::move(layer)); 1102 layers_->push_back(std::move(layer));
1102 set_needs_update_draw_properties(); 1103 set_needs_update_draw_properties();
1103 } 1104 }
1104 1105
(...skipping 859 matching lines...) Expand 10 before | Expand all | Expand 10 after
1964 1965
1965 std::unique_ptr<PendingPageScaleAnimation> 1966 std::unique_ptr<PendingPageScaleAnimation>
1966 LayerTreeImpl::TakePendingPageScaleAnimation() { 1967 LayerTreeImpl::TakePendingPageScaleAnimation() {
1967 return std::move(pending_page_scale_animation_); 1968 return std::move(pending_page_scale_animation_);
1968 } 1969 }
1969 1970
1970 bool LayerTreeImpl::IsAnimatingFilterProperty(const LayerImpl* layer) const { 1971 bool LayerTreeImpl::IsAnimatingFilterProperty(const LayerImpl* layer) const {
1971 ElementListType list_type = 1972 ElementListType list_type =
1972 IsActiveTree() ? ElementListType::ACTIVE : ElementListType::PENDING; 1973 IsActiveTree() ? ElementListType::ACTIVE : ElementListType::PENDING;
1973 return layer_tree_host_impl_->animation_host()->IsAnimatingFilterProperty( 1974 return layer_tree_host_impl_->animation_host()->IsAnimatingFilterProperty(
1974 layer->id(), list_type); 1975 layer->element_id(), list_type);
1975 } 1976 }
1976 1977
1977 bool LayerTreeImpl::IsAnimatingOpacityProperty(const LayerImpl* layer) const { 1978 bool LayerTreeImpl::IsAnimatingOpacityProperty(const LayerImpl* layer) const {
1978 ElementListType list_type = 1979 ElementListType list_type =
1979 IsActiveTree() ? ElementListType::ACTIVE : ElementListType::PENDING; 1980 IsActiveTree() ? ElementListType::ACTIVE : ElementListType::PENDING;
1980 return layer_tree_host_impl_->animation_host()->IsAnimatingOpacityProperty( 1981 return layer_tree_host_impl_->animation_host()->IsAnimatingOpacityProperty(
1981 layer->id(), list_type); 1982 layer->element_id(), list_type);
1982 } 1983 }
1983 1984
1984 bool LayerTreeImpl::IsAnimatingTransformProperty(const LayerImpl* layer) const { 1985 bool LayerTreeImpl::IsAnimatingTransformProperty(const LayerImpl* layer) const {
1985 ElementListType list_type = 1986 ElementListType list_type =
1986 IsActiveTree() ? ElementListType::ACTIVE : ElementListType::PENDING; 1987 IsActiveTree() ? ElementListType::ACTIVE : ElementListType::PENDING;
1987 return layer_tree_host_impl_->animation_host()->IsAnimatingTransformProperty( 1988 return layer_tree_host_impl_->animation_host()->IsAnimatingTransformProperty(
1988 layer->id(), list_type); 1989 layer->element_id(), list_type);
1989 } 1990 }
1990 1991
1991 bool LayerTreeImpl::HasPotentiallyRunningFilterAnimation( 1992 bool LayerTreeImpl::HasPotentiallyRunningFilterAnimation(
1992 const LayerImpl* layer) const { 1993 const LayerImpl* layer) const {
1993 ElementListType list_type = 1994 ElementListType list_type =
1994 IsActiveTree() ? ElementListType::ACTIVE : ElementListType::PENDING; 1995 IsActiveTree() ? ElementListType::ACTIVE : ElementListType::PENDING;
1995 return layer_tree_host_impl_->animation_host() 1996 return layer_tree_host_impl_->animation_host()
1996 ->HasPotentiallyRunningFilterAnimation(layer->id(), list_type); 1997 ->HasPotentiallyRunningFilterAnimation(layer->element_id(), list_type);
1997 } 1998 }
1998 1999
1999 bool LayerTreeImpl::HasPotentiallyRunningOpacityAnimation( 2000 bool LayerTreeImpl::HasPotentiallyRunningOpacityAnimation(
2000 const LayerImpl* layer) const { 2001 const LayerImpl* layer) const {
2001 ElementListType list_type = 2002 ElementListType list_type =
2002 IsActiveTree() ? ElementListType::ACTIVE : ElementListType::PENDING; 2003 IsActiveTree() ? ElementListType::ACTIVE : ElementListType::PENDING;
2003 return layer_tree_host_impl_->animation_host() 2004 return layer_tree_host_impl_->animation_host()
2004 ->HasPotentiallyRunningOpacityAnimation(layer->id(), list_type); 2005 ->HasPotentiallyRunningOpacityAnimation(layer->element_id(), list_type);
2005 } 2006 }
2006 2007
2007 bool LayerTreeImpl::HasPotentiallyRunningTransformAnimation( 2008 bool LayerTreeImpl::HasPotentiallyRunningTransformAnimation(
2008 const LayerImpl* layer) const { 2009 const LayerImpl* layer) const {
2009 ElementListType list_type = 2010 ElementListType list_type =
2010 IsActiveTree() ? ElementListType::ACTIVE : ElementListType::PENDING; 2011 IsActiveTree() ? ElementListType::ACTIVE : ElementListType::PENDING;
2011 return layer_tree_host_impl_->animation_host() 2012 return layer_tree_host_impl_->animation_host()
2012 ->HasPotentiallyRunningTransformAnimation(layer->id(), list_type); 2013 ->HasPotentiallyRunningTransformAnimation(layer->element_id(), list_type);
2013 } 2014 }
2014 2015
2015 bool LayerTreeImpl::HasAnyAnimationTargetingProperty( 2016 bool LayerTreeImpl::HasAnyAnimationTargetingProperty(
2016 const LayerImpl* layer, 2017 const LayerImpl* layer,
2017 TargetProperty::Type property) const { 2018 TargetProperty::Type property) const {
2018 return layer_tree_host_impl_->animation_host() 2019 return layer_tree_host_impl_->animation_host()
2019 ->HasAnyAnimationTargetingProperty(layer->id(), property); 2020 ->HasAnyAnimationTargetingProperty(layer->element_id(), property);
2020 } 2021 }
2021 2022
2022 bool LayerTreeImpl::AnimationsPreserveAxisAlignment( 2023 bool LayerTreeImpl::AnimationsPreserveAxisAlignment(
2023 const LayerImpl* layer) const { 2024 const LayerImpl* layer) const {
2024 return layer_tree_host_impl_->animation_host() 2025 return layer_tree_host_impl_->animation_host()
2025 ->AnimationsPreserveAxisAlignment(layer->id()); 2026 ->AnimationsPreserveAxisAlignment(layer->element_id());
2026 } 2027 }
2027 2028
2028 bool LayerTreeImpl::HasOnlyTranslationTransforms(const LayerImpl* layer) const { 2029 bool LayerTreeImpl::HasOnlyTranslationTransforms(const LayerImpl* layer) const {
2029 ElementListType list_type = 2030 ElementListType list_type =
2030 IsActiveTree() ? ElementListType::ACTIVE : ElementListType::PENDING; 2031 IsActiveTree() ? ElementListType::ACTIVE : ElementListType::PENDING;
2031 return layer_tree_host_impl_->animation_host()->HasOnlyTranslationTransforms( 2032 return layer_tree_host_impl_->animation_host()->HasOnlyTranslationTransforms(
2032 layer->id(), list_type); 2033 layer->element_id(), list_type);
2033 } 2034 }
2034 2035
2035 bool LayerTreeImpl::MaximumTargetScale(const LayerImpl* layer, 2036 bool LayerTreeImpl::MaximumTargetScale(const LayerImpl* layer,
2036 float* max_scale) const { 2037 float* max_scale) const {
2037 *max_scale = 0.f; 2038 *max_scale = 0.f;
2038 ElementListType list_type = 2039 ElementListType list_type =
2039 IsActiveTree() ? ElementListType::ACTIVE : ElementListType::PENDING; 2040 IsActiveTree() ? ElementListType::ACTIVE : ElementListType::PENDING;
2040 return layer_tree_host_impl_->animation_host()->MaximumTargetScale( 2041 return layer_tree_host_impl_->animation_host()->MaximumTargetScale(
2041 layer->id(), list_type, max_scale); 2042 layer->element_id(), list_type, max_scale);
2042 } 2043 }
2043 2044
2044 bool LayerTreeImpl::AnimationStartScale(const LayerImpl* layer, 2045 bool LayerTreeImpl::AnimationStartScale(const LayerImpl* layer,
2045 float* start_scale) const { 2046 float* start_scale) const {
2046 *start_scale = 0.f; 2047 *start_scale = 0.f;
2047 ElementListType list_type = 2048 ElementListType list_type =
2048 IsActiveTree() ? ElementListType::ACTIVE : ElementListType::PENDING; 2049 IsActiveTree() ? ElementListType::ACTIVE : ElementListType::PENDING;
2049 return layer_tree_host_impl_->animation_host()->AnimationStartScale( 2050 return layer_tree_host_impl_->animation_host()->AnimationStartScale(
2050 layer->id(), list_type, start_scale); 2051 layer->element_id(), list_type, start_scale);
2051 } 2052 }
2052 2053
2053 bool LayerTreeImpl::HasFilterAnimationThatInflatesBounds( 2054 bool LayerTreeImpl::HasFilterAnimationThatInflatesBounds(
2054 const LayerImpl* layer) const { 2055 const LayerImpl* layer) const {
2055 return layer_tree_host_impl_->animation_host() 2056 return layer_tree_host_impl_->animation_host()
2056 ->HasFilterAnimationThatInflatesBounds(layer->id()); 2057 ->HasFilterAnimationThatInflatesBounds(layer->element_id());
2057 } 2058 }
2058 2059
2059 bool LayerTreeImpl::HasTransformAnimationThatInflatesBounds( 2060 bool LayerTreeImpl::HasTransformAnimationThatInflatesBounds(
2060 const LayerImpl* layer) const { 2061 const LayerImpl* layer) const {
2061 return layer_tree_host_impl_->animation_host() 2062 return layer_tree_host_impl_->animation_host()
2062 ->HasTransformAnimationThatInflatesBounds(layer->id()); 2063 ->HasTransformAnimationThatInflatesBounds(layer->element_id());
2063 } 2064 }
2064 2065
2065 bool LayerTreeImpl::HasAnimationThatInflatesBounds( 2066 bool LayerTreeImpl::HasAnimationThatInflatesBounds(
2066 const LayerImpl* layer) const { 2067 const LayerImpl* layer) const {
2067 return layer_tree_host_impl_->animation_host() 2068 return layer_tree_host_impl_->animation_host()
2068 ->HasAnimationThatInflatesBounds(layer->id()); 2069 ->HasAnimationThatInflatesBounds(layer->element_id());
2069 } 2070 }
2070 2071
2071 bool LayerTreeImpl::FilterAnimationBoundsForBox(const LayerImpl* layer, 2072 bool LayerTreeImpl::FilterAnimationBoundsForBox(const LayerImpl* layer,
2072 const gfx::BoxF& box, 2073 const gfx::BoxF& box,
2073 gfx::BoxF* bounds) const { 2074 gfx::BoxF* bounds) const {
2074 return layer_tree_host_impl_->animation_host()->FilterAnimationBoundsForBox( 2075 return layer_tree_host_impl_->animation_host()->FilterAnimationBoundsForBox(
2075 layer->id(), box, bounds); 2076 layer->element_id(), box, bounds);
2076 } 2077 }
2077 2078
2078 bool LayerTreeImpl::TransformAnimationBoundsForBox(const LayerImpl* layer, 2079 bool LayerTreeImpl::TransformAnimationBoundsForBox(const LayerImpl* layer,
2079 const gfx::BoxF& box, 2080 const gfx::BoxF& box,
2080 gfx::BoxF* bounds) const { 2081 gfx::BoxF* bounds) const {
2081 *bounds = gfx::BoxF(); 2082 *bounds = gfx::BoxF();
2082 return layer_tree_host_impl_->animation_host() 2083 return layer_tree_host_impl_->animation_host()
2083 ->TransformAnimationBoundsForBox(layer->id(), box, bounds); 2084 ->TransformAnimationBoundsForBox(layer->element_id(), box, bounds);
2084 } 2085 }
2085 2086
2086 void LayerTreeImpl::ScrollAnimationAbort(bool needs_completion) { 2087 void LayerTreeImpl::ScrollAnimationAbort(bool needs_completion) {
2087 layer_tree_host_impl_->animation_host()->ScrollAnimationAbort( 2088 layer_tree_host_impl_->animation_host()->ScrollAnimationAbort(
2088 needs_completion); 2089 needs_completion);
2089 } 2090 }
2090 2091
2091 void LayerTreeImpl::ResetAllChangeTracking() { 2092 void LayerTreeImpl::ResetAllChangeTracking() {
2092 layers_that_should_push_properties_.clear(); 2093 layers_that_should_push_properties_.clear();
2093 // Iterate over all layers, including masks and replicas. 2094 // Iterate over all layers, including masks and replicas.
2094 for (auto& layer : *layers_) 2095 for (auto& layer : *layers_)
2095 layer->ResetChangeTracking(); 2096 layer->ResetChangeTracking();
2096 property_trees_.ResetAllChangeTracking(); 2097 property_trees_.ResetAllChangeTracking();
2097 } 2098 }
2098 2099
2099 } // namespace cc 2100 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/layer_tree_impl.h ('k') | cc/trees/mutator_host_client.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698