| OLD | NEW |
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 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/layers/layer_impl.h" | 5 #include "cc/layers/layer_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 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 82 current_draw_mode_(DRAW_MODE_NONE), | 82 current_draw_mode_(DRAW_MODE_NONE), |
| 83 element_id_(0), | 83 element_id_(0), |
| 84 mutable_properties_(MutableProperty::kNone), | 84 mutable_properties_(MutableProperty::kNone), |
| 85 debug_info_(nullptr), | 85 debug_info_(nullptr), |
| 86 scrolls_drawn_descendant_(false), | 86 scrolls_drawn_descendant_(false), |
| 87 layer_or_descendant_has_touch_handler_(false) { | 87 layer_or_descendant_has_touch_handler_(false) { |
| 88 DCHECK_GT(layer_id_, 0); | 88 DCHECK_GT(layer_id_, 0); |
| 89 | 89 |
| 90 DCHECK(layer_tree_impl_); | 90 DCHECK(layer_tree_impl_); |
| 91 layer_tree_impl_->RegisterLayer(this); | 91 layer_tree_impl_->RegisterLayer(this); |
| 92 // TODO(loyso): Pass element_id_ via constructor. |
| 93 // Note that since element_id_ is zero here, calling RegisterLayerForElementId |
| 94 // and AddToElementMap is a matter of elegance/symmetry. See SetElementId. |
| 95 if (element_id()) |
| 96 layer_tree_impl_->RegisterLayerForElementId(this); |
| 92 layer_tree_impl_->AddToElementMap(this); | 97 layer_tree_impl_->AddToElementMap(this); |
| 93 | 98 |
| 94 SetNeedsPushProperties(); | 99 SetNeedsPushProperties(); |
| 95 } | 100 } |
| 96 | 101 |
| 97 LayerImpl::~LayerImpl() { | 102 LayerImpl::~LayerImpl() { |
| 98 DCHECK_EQ(DRAW_MODE_NONE, current_draw_mode_); | 103 DCHECK_EQ(DRAW_MODE_NONE, current_draw_mode_); |
| 99 | 104 |
| 100 if (!copy_requests_.empty() && layer_tree_impl_->IsActiveTree()) | 105 if (!copy_requests_.empty() && layer_tree_impl_->IsActiveTree()) |
| 101 layer_tree_impl()->RemoveLayerWithCopyOutputRequest(this); | 106 layer_tree_impl()->RemoveLayerWithCopyOutputRequest(this); |
| 102 layer_tree_impl_->UnregisterScrollLayer(this); | 107 layer_tree_impl_->UnregisterScrollLayer(this); |
| 103 layer_tree_impl_->UnregisterLayer(this); | |
| 104 layer_tree_impl_->RemoveLayerShouldPushProperties(this); | |
| 105 | 108 |
| 106 layer_tree_impl_->RemoveFromElementMap(this); | 109 layer_tree_impl_->RemoveFromElementMap(this); |
| 110 if (element_id()) |
| 111 layer_tree_impl_->UnregisterLayerForElementId(this); |
| 112 layer_tree_impl_->UnregisterLayer(this); |
| 113 |
| 114 layer_tree_impl_->RemoveLayerShouldPushProperties(this); |
| 107 | 115 |
| 108 TRACE_EVENT_OBJECT_DELETED_WITH_ID( | 116 TRACE_EVENT_OBJECT_DELETED_WITH_ID( |
| 109 TRACE_DISABLED_BY_DEFAULT("cc.debug"), "cc::LayerImpl", this); | 117 TRACE_DISABLED_BY_DEFAULT("cc.debug"), "cc::LayerImpl", this); |
| 110 | 118 |
| 111 if (mask_layer_) | 119 if (mask_layer_) |
| 112 layer_tree_impl_->RemoveLayer(mask_layer_id_); | 120 layer_tree_impl_->RemoveLayer(mask_layer_id_); |
| 113 if (replica_layer_) | 121 if (replica_layer_) |
| 114 layer_tree_impl_->RemoveLayer(replica_layer_id_); | 122 layer_tree_impl_->RemoveLayer(replica_layer_id_); |
| 115 ClearChildList(); | 123 ClearChildList(); |
| 116 } | 124 } |
| (...skipping 265 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 382 ScrollTree& scroll_tree = layer_tree_impl()->property_trees()->scroll_tree; | 390 ScrollTree& scroll_tree = layer_tree_impl()->property_trees()->scroll_tree; |
| 383 ScrollNode* scroll_node = scroll_tree.Node(scroll_tree_index()); | 391 ScrollNode* scroll_node = scroll_tree.Node(scroll_tree_index()); |
| 384 return scroll_tree.ScrollBy(scroll_node, scroll, layer_tree_impl()); | 392 return scroll_tree.ScrollBy(scroll_node, scroll, layer_tree_impl()); |
| 385 } | 393 } |
| 386 | 394 |
| 387 void LayerImpl::SetScrollClipLayer(int scroll_clip_layer_id) { | 395 void LayerImpl::SetScrollClipLayer(int scroll_clip_layer_id) { |
| 388 if (scroll_clip_layer_id_ == scroll_clip_layer_id) | 396 if (scroll_clip_layer_id_ == scroll_clip_layer_id) |
| 389 return; | 397 return; |
| 390 | 398 |
| 391 layer_tree_impl()->UnregisterScrollLayer(this); | 399 layer_tree_impl()->UnregisterScrollLayer(this); |
| 400 if (element_id()) |
| 401 layer_tree_impl()->UnregisterLayerForElementId(this); |
| 402 |
| 392 scroll_clip_layer_id_ = scroll_clip_layer_id; | 403 scroll_clip_layer_id_ = scroll_clip_layer_id; |
| 404 |
| 405 if (element_id()) |
| 406 layer_tree_impl()->RegisterLayerForElementId(this); |
| 393 layer_tree_impl()->RegisterScrollLayer(this); | 407 layer_tree_impl()->RegisterScrollLayer(this); |
| 394 } | 408 } |
| 395 | 409 |
| 396 LayerImpl* LayerImpl::scroll_clip_layer() const { | 410 LayerImpl* LayerImpl::scroll_clip_layer() const { |
| 397 return layer_tree_impl()->LayerById(scroll_clip_layer_id_); | 411 return layer_tree_impl()->LayerById(scroll_clip_layer_id_); |
| 398 } | 412 } |
| 399 | 413 |
| 400 bool LayerImpl::scrollable() const { | 414 bool LayerImpl::scrollable() const { |
| 401 return scroll_clip_layer_id_ != Layer::INVALID_ID; | 415 return scroll_clip_layer_id_ != Layer::INVALID_ID; |
| 402 } | 416 } |
| (...skipping 613 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1016 } | 1030 } |
| 1017 | 1031 |
| 1018 void LayerImpl::SetElementId(ElementId element_id) { | 1032 void LayerImpl::SetElementId(ElementId element_id) { |
| 1019 if (element_id == element_id_) | 1033 if (element_id == element_id_) |
| 1020 return; | 1034 return; |
| 1021 | 1035 |
| 1022 TRACE_EVENT1(TRACE_DISABLED_BY_DEFAULT("compositor-worker"), | 1036 TRACE_EVENT1(TRACE_DISABLED_BY_DEFAULT("compositor-worker"), |
| 1023 "LayerImpl::SetElementId", "id", element_id); | 1037 "LayerImpl::SetElementId", "id", element_id); |
| 1024 | 1038 |
| 1025 layer_tree_impl_->RemoveFromElementMap(this); | 1039 layer_tree_impl_->RemoveFromElementMap(this); |
| 1040 if (element_id_) |
| 1041 layer_tree_impl_->UnregisterLayerForElementId(this); |
| 1042 |
| 1026 element_id_ = element_id; | 1043 element_id_ = element_id; |
| 1044 |
| 1027 layer_tree_impl_->AddToElementMap(this); | 1045 layer_tree_impl_->AddToElementMap(this); |
| 1046 if (element_id_) |
| 1047 layer_tree_impl_->RegisterLayerForElementId(this); |
| 1048 |
| 1028 SetNeedsPushProperties(); | 1049 SetNeedsPushProperties(); |
| 1029 } | 1050 } |
| 1030 | 1051 |
| 1031 void LayerImpl::SetMutableProperties(uint32_t properties) { | 1052 void LayerImpl::SetMutableProperties(uint32_t properties) { |
| 1032 if (mutable_properties_ == properties) | 1053 if (mutable_properties_ == properties) |
| 1033 return; | 1054 return; |
| 1034 | 1055 |
| 1035 TRACE_EVENT1(TRACE_DISABLED_BY_DEFAULT("compositor-worker"), | 1056 TRACE_EVENT1(TRACE_DISABLED_BY_DEFAULT("compositor-worker"), |
| 1036 "LayerImpl::SetMutableProperties", "properties", properties); | 1057 "LayerImpl::SetMutableProperties", "properties", properties); |
| 1037 | 1058 |
| (...skipping 372 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1410 .layer_transforms_should_scale_layer_contents) { | 1431 .layer_transforms_should_scale_layer_contents) { |
| 1411 return default_scale; | 1432 return default_scale; |
| 1412 } | 1433 } |
| 1413 | 1434 |
| 1414 gfx::Vector2dF transform_scales = MathUtil::ComputeTransform2dScaleComponents( | 1435 gfx::Vector2dF transform_scales = MathUtil::ComputeTransform2dScaleComponents( |
| 1415 DrawTransform(), default_scale); | 1436 DrawTransform(), default_scale); |
| 1416 return std::max(transform_scales.x(), transform_scales.y()); | 1437 return std::max(transform_scales.x(), transform_scales.y()); |
| 1417 } | 1438 } |
| 1418 | 1439 |
| 1419 } // namespace cc | 1440 } // namespace cc |
| OLD | NEW |