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

Side by Side Diff: cc/layers/layer_impl.cc

Issue 1944623002: CC Animation: Use ElementId to attach CC animation players. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@erasedomids
Patch Set: Created 4 years, 7 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
OLDNEW
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698