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 362 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
373 property_trees_.is_active = IsActiveTree(); | 373 property_trees_.is_active = IsActiveTree(); |
374 property_trees_.transform_tree.set_source_to_parent_updates_allowed(false); | 374 property_trees_.transform_tree.set_source_to_parent_updates_allowed(false); |
375 } | 375 } |
376 | 376 |
377 void LayerTreeImpl::PushPropertiesTo(LayerTreeImpl* target_tree) { | 377 void LayerTreeImpl::PushPropertiesTo(LayerTreeImpl* target_tree) { |
378 // The request queue should have been processed and does not require a push. | 378 // The request queue should have been processed and does not require a push. |
379 DCHECK_EQ(ui_resource_request_queue_.size(), 0u); | 379 DCHECK_EQ(ui_resource_request_queue_.size(), 0u); |
380 | 380 |
381 // To maintain the current scrolling node we need to use element ids which | 381 // To maintain the current scrolling node we need to use element ids which |
382 // are stable across the property tree update in SetPropertyTrees. | 382 // are stable across the property tree update in SetPropertyTrees. |
383 ElementId scrolling_element_id; | 383 ElementId scrolling_element_id = 0; |
wkorman
2017/05/05 20:06:10
kInvalidElementId here?
chrishtr
2017/05/05 20:46:09
Done.
| |
384 if (ScrollNode* scrolling_node = target_tree->CurrentlyScrollingNode()) | 384 if (ScrollNode* scrolling_node = target_tree->CurrentlyScrollingNode()) |
385 scrolling_element_id = scrolling_node->element_id; | 385 scrolling_element_id = scrolling_node->element_id; |
386 | 386 |
387 target_tree->SetPropertyTrees(&property_trees_); | 387 target_tree->SetPropertyTrees(&property_trees_); |
388 | 388 |
389 ScrollNode* scrolling_node = nullptr; | 389 ScrollNode* scrolling_node = nullptr; |
390 if (scrolling_element_id) { | 390 if (scrolling_element_id) { |
391 auto& scroll_tree = target_tree->property_trees()->scroll_tree; | 391 auto& scroll_tree = target_tree->property_trees()->scroll_tree; |
392 scrolling_node = scroll_tree.FindNodeFromElementId(scrolling_element_id); | 392 scrolling_node = scroll_tree.FindNodeFromElementId(scrolling_element_id); |
393 } | 393 } |
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
529 LayerImpl* LayerTreeImpl::LayerByElementId(ElementId element_id) const { | 529 LayerImpl* LayerTreeImpl::LayerByElementId(ElementId element_id) const { |
530 return LayerById(LayerIdByElementId(element_id)); | 530 return LayerById(LayerIdByElementId(element_id)); |
531 } | 531 } |
532 | 532 |
533 void LayerTreeImpl::AddToElementMap(LayerImpl* layer) { | 533 void LayerTreeImpl::AddToElementMap(LayerImpl* layer) { |
534 ElementId element_id = layer->element_id(); | 534 ElementId element_id = layer->element_id(); |
535 if (!element_id) | 535 if (!element_id) |
536 return; | 536 return; |
537 | 537 |
538 TRACE_EVENT2(TRACE_DISABLED_BY_DEFAULT("compositor-worker"), | 538 TRACE_EVENT2(TRACE_DISABLED_BY_DEFAULT("compositor-worker"), |
539 "LayerTreeImpl::AddToElementMap", "element", | 539 "LayerTreeImpl::AddToElementMap", "element", element_id, |
540 element_id.AsValue().release(), "layer_id", layer->id()); | 540 "layer_id", layer->id()); |
541 | 541 |
542 #if DCHECK_IS_ON() | 542 #if DCHECK_IS_ON() |
543 LayerImpl* existing_layer = LayerByElementId(element_id); | 543 LayerImpl* existing_layer = LayerByElementId(element_id); |
544 bool element_id_collision_detected = | 544 bool element_id_collision_detected = |
545 existing_layer && existing_layer != layer; | 545 existing_layer && existing_layer != layer; |
546 | 546 |
547 // TODO(pdr): Remove this suppression and always check for id collisions. | 547 // TODO(pdr): Remove this suppression and always check for id collisions. |
548 // This is a temporary suppression for SPV2 which generates unnecessary | 548 // This is a temporary suppression for SPV2 which generates unnecessary |
549 // layers that collide. Remove once crbug.com/693693 is fixed. | 549 // layers that collide. Remove once crbug.com/693693 is fixed. |
550 if (!settings().use_layer_lists) | 550 if (!settings().use_layer_lists) |
551 DCHECK(!element_id_collision_detected); | 551 DCHECK(!element_id_collision_detected); |
552 #endif | 552 #endif |
553 | 553 |
554 element_layers_map_[element_id] = layer->id(); | 554 element_layers_map_[element_id] = layer->id(); |
555 | 555 |
556 layer_tree_host_impl_->mutator_host()->RegisterElement( | 556 layer_tree_host_impl_->mutator_host()->RegisterElement( |
557 element_id, | 557 element_id, |
558 IsActiveTree() ? ElementListType::ACTIVE : ElementListType::PENDING); | 558 IsActiveTree() ? ElementListType::ACTIVE : ElementListType::PENDING); |
559 } | 559 } |
560 | 560 |
561 void LayerTreeImpl::RemoveFromElementMap(LayerImpl* layer) { | 561 void LayerTreeImpl::RemoveFromElementMap(LayerImpl* layer) { |
562 if (!layer->element_id()) | 562 if (!layer->element_id()) |
563 return; | 563 return; |
564 | 564 |
565 TRACE_EVENT2(TRACE_DISABLED_BY_DEFAULT("compositor-worker"), | 565 TRACE_EVENT2(TRACE_DISABLED_BY_DEFAULT("compositor-worker"), |
566 "LayerTreeImpl::RemoveFromElementMap", "element", | 566 "LayerTreeImpl::RemoveFromElementMap", "element", |
567 layer->element_id().AsValue().release(), "layer_id", | 567 layer->element_id(), "layer_id", layer->id()); |
568 layer->id()); | |
569 | 568 |
570 layer_tree_host_impl_->mutator_host()->UnregisterElement( | 569 layer_tree_host_impl_->mutator_host()->UnregisterElement( |
571 layer->element_id(), | 570 layer->element_id(), |
572 IsActiveTree() ? ElementListType::ACTIVE : ElementListType::PENDING); | 571 IsActiveTree() ? ElementListType::ACTIVE : ElementListType::PENDING); |
573 | 572 |
574 element_layers_map_.erase(layer->element_id()); | 573 element_layers_map_.erase(layer->element_id()); |
575 } | 574 } |
576 | 575 |
577 void LayerTreeImpl::AddToOpacityAnimationsMap(int id, float opacity) { | 576 void LayerTreeImpl::AddToOpacityAnimationsMap(int id, float opacity) { |
578 if (LayerImpl* layer = LayerById(id)) | 577 if (LayerImpl* layer = LayerById(id)) |
(...skipping 399 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
978 | 977 |
979 void LayerTreeImpl::ClearViewportLayers() { | 978 void LayerTreeImpl::ClearViewportLayers() { |
980 overscroll_elasticity_layer_id_ = Layer::INVALID_ID; | 979 overscroll_elasticity_layer_id_ = Layer::INVALID_ID; |
981 page_scale_layer_id_ = Layer::INVALID_ID; | 980 page_scale_layer_id_ = Layer::INVALID_ID; |
982 inner_viewport_scroll_layer_id_ = Layer::INVALID_ID; | 981 inner_viewport_scroll_layer_id_ = Layer::INVALID_ID; |
983 outer_viewport_scroll_layer_id_ = Layer::INVALID_ID; | 982 outer_viewport_scroll_layer_id_ = Layer::INVALID_ID; |
984 } | 983 } |
985 | 984 |
986 // For unit tests, we use the layer's id as its element id. | 985 // For unit tests, we use the layer's id as its element id. |
987 static void SetElementIdForTesting(LayerImpl* layer) { | 986 static void SetElementIdForTesting(LayerImpl* layer) { |
988 layer->SetElementId(LayerIdToElementIdForTesting(layer->id())); | 987 layer->SetElementId(layer->id()); |
989 } | 988 } |
990 | 989 |
991 void LayerTreeImpl::SetElementIdsForTesting() { | 990 void LayerTreeImpl::SetElementIdsForTesting() { |
992 LayerListIterator<LayerImpl> it(root_layer_for_testing_); | 991 LayerListIterator<LayerImpl> it(root_layer_for_testing_); |
993 for (; it != LayerListIterator<LayerImpl>(nullptr); ++it) { | 992 for (; it != LayerListIterator<LayerImpl>(nullptr); ++it) { |
994 if (!it->element_id()) | 993 if (!it->element_id()) |
995 SetElementIdForTesting(*it); | 994 SetElementIdForTesting(*it); |
996 } | 995 } |
997 } | 996 } |
998 | 997 |
(...skipping 1093 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2092 | 2091 |
2093 void LayerTreeImpl::ResetAllChangeTracking() { | 2092 void LayerTreeImpl::ResetAllChangeTracking() { |
2094 layers_that_should_push_properties_.clear(); | 2093 layers_that_should_push_properties_.clear(); |
2095 // Iterate over all layers, including masks. | 2094 // Iterate over all layers, including masks. |
2096 for (auto& layer : *layers_) | 2095 for (auto& layer : *layers_) |
2097 layer->ResetChangeTracking(); | 2096 layer->ResetChangeTracking(); |
2098 property_trees_.ResetAllChangeTracking(); | 2097 property_trees_.ResetAllChangeTracking(); |
2099 } | 2098 } |
2100 | 2099 |
2101 } // namespace cc | 2100 } // namespace cc |
OLD | NEW |