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

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

Issue 1688563002: cc :: Move some tracking of layer_property_changed to main thread. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 10 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/layers/layer_impl.h ('k') | cc/layers/layer_impl_unittest.cc » ('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 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 <utility> 10 #include <utility>
(...skipping 286 matching lines...) Expand 10 before | Expand all | Expand 10 after
297 if (requests->empty()) 297 if (requests->empty())
298 return; 298 return;
299 299
300 bool was_empty = copy_requests_.empty(); 300 bool was_empty = copy_requests_.empty();
301 for (auto& request : *requests) 301 for (auto& request : *requests)
302 copy_requests_.push_back(std::move(request)); 302 copy_requests_.push_back(std::move(request));
303 requests->clear(); 303 requests->clear();
304 304
305 if (was_empty && layer_tree_impl()->IsActiveTree()) 305 if (was_empty && layer_tree_impl()->IsActiveTree())
306 layer_tree_impl()->AddLayerWithCopyOutputRequest(this); 306 layer_tree_impl()->AddLayerWithCopyOutputRequest(this);
307 NoteLayerPropertyChangedForSubtree();
308 } 307 }
309 308
310 void LayerImpl::TakeCopyRequestsAndTransformToTarget( 309 void LayerImpl::TakeCopyRequestsAndTransformToTarget(
311 std::vector<scoped_ptr<CopyOutputRequest>>* requests) { 310 std::vector<scoped_ptr<CopyOutputRequest>>* requests) {
312 DCHECK(!copy_requests_.empty()); 311 DCHECK(!copy_requests_.empty());
313 DCHECK(layer_tree_impl()->IsActiveTree()); 312 DCHECK(layer_tree_impl()->IsActiveTree());
314 DCHECK_EQ(render_target(), this); 313 DCHECK_EQ(render_target(), this);
315 314
316 size_t first_inserted_request = requests->size(); 315 size_t first_inserted_request = requests->size();
317 for (auto& request : copy_requests_) 316 for (auto& request : copy_requests_)
(...skipping 315 matching lines...) Expand 10 before | Expand all | Expand 10 after
633 layer->SetPositionConstraint(position_constraint_); 632 layer->SetPositionConstraint(position_constraint_);
634 layer->SetShouldFlattenTransform(should_flatten_transform_); 633 layer->SetShouldFlattenTransform(should_flatten_transform_);
635 layer->set_should_flatten_transform_from_property_tree( 634 layer->set_should_flatten_transform_from_property_tree(
636 should_flatten_transform_from_property_tree_); 635 should_flatten_transform_from_property_tree_);
637 layer->set_draw_blend_mode(draw_blend_mode_); 636 layer->set_draw_blend_mode(draw_blend_mode_);
638 layer->SetUseParentBackfaceVisibility(use_parent_backface_visibility_); 637 layer->SetUseParentBackfaceVisibility(use_parent_backface_visibility_);
639 layer->SetUseLocalTransformForBackfaceVisibility( 638 layer->SetUseLocalTransformForBackfaceVisibility(
640 use_local_transform_for_backface_visibility_); 639 use_local_transform_for_backface_visibility_);
641 layer->SetShouldCheckBackfaceVisibility(should_check_backface_visibility_); 640 layer->SetShouldCheckBackfaceVisibility(should_check_backface_visibility_);
642 layer->SetTransformAndInvertibility(transform_, transform_is_invertible_); 641 layer->SetTransformAndInvertibility(transform_, transform_is_invertible_);
642 if (layer_property_changed_)
643 layer->NoteLayerPropertyChanged();
643 644
644 layer->SetScrollClipLayer(scroll_clip_layer_id_); 645 layer->SetScrollClipLayer(scroll_clip_layer_id_);
645 layer->SetElementId(element_id_); 646 layer->SetElementId(element_id_);
646 layer->SetMutableProperties(mutable_properties_); 647 layer->SetMutableProperties(mutable_properties_);
647 layer->set_user_scrollable_horizontal(user_scrollable_horizontal_); 648 layer->set_user_scrollable_horizontal(user_scrollable_horizontal_);
648 layer->set_user_scrollable_vertical(user_scrollable_vertical_); 649 layer->set_user_scrollable_vertical(user_scrollable_vertical_);
649 650
650 layer->SetScrollCompensationAdjustment(scroll_compensation_adjustment_); 651 layer->SetScrollCompensationAdjustment(scroll_compensation_adjustment_);
651 652
652 layer->PushScrollOffset(nullptr); 653 layer->PushScrollOffset(nullptr);
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
713 layer->SetStackingOrderChanged(stacking_order_changed_); 714 layer->SetStackingOrderChanged(stacking_order_changed_);
714 layer->SetDebugInfo(debug_info_); 715 layer->SetDebugInfo(debug_info_);
715 716
716 if (frame_timing_requests_dirty_) { 717 if (frame_timing_requests_dirty_) {
717 layer->SetFrameTimingRequests(frame_timing_requests_); 718 layer->SetFrameTimingRequests(frame_timing_requests_);
718 frame_timing_requests_dirty_ = false; 719 frame_timing_requests_dirty_ = false;
719 } 720 }
720 721
721 // Reset any state that should be cleared for the next update. 722 // Reset any state that should be cleared for the next update.
722 stacking_order_changed_ = false; 723 stacking_order_changed_ = false;
724 layer_property_changed_ = false;
723 update_rect_ = gfx::Rect(); 725 update_rect_ = gfx::Rect();
724 needs_push_properties_ = false; 726 needs_push_properties_ = false;
725 num_dependents_need_push_properties_ = 0; 727 num_dependents_need_push_properties_ = 0;
726 } 728 }
727 729
728 bool LayerImpl::IsAffectedByPageScale() const { 730 bool LayerImpl::IsAffectedByPageScale() const {
729 TransformTree& transform_tree = 731 TransformTree& transform_tree =
730 layer_tree_impl()->property_trees()->transform_tree; 732 layer_tree_impl()->property_trees()->transform_tree;
731 return transform_tree.Node(transform_tree_index()) 733 return transform_tree.Node(transform_tree_index())
732 ->data.in_subtree_of_page_scale_layer; 734 ->data.in_subtree_of_page_scale_layer;
(...skipping 341 matching lines...) Expand 10 before | Expand all | Expand 10 after
1074 DCHECK_EQ(layer_tree_impl(), mask_layer->layer_tree_impl()); 1076 DCHECK_EQ(layer_tree_impl(), mask_layer->layer_tree_impl());
1075 DCHECK_NE(new_layer_id, mask_layer_id_); 1077 DCHECK_NE(new_layer_id, mask_layer_id_);
1076 } else if (new_layer_id == mask_layer_id_) { 1078 } else if (new_layer_id == mask_layer_id_) {
1077 return; 1079 return;
1078 } 1080 }
1079 1081
1080 mask_layer_ = std::move(mask_layer); 1082 mask_layer_ = std::move(mask_layer);
1081 mask_layer_id_ = new_layer_id; 1083 mask_layer_id_ = new_layer_id;
1082 if (mask_layer_) 1084 if (mask_layer_)
1083 mask_layer_->SetParent(this); 1085 mask_layer_->SetParent(this);
1084 NoteLayerPropertyChangedForSubtree();
1085 } 1086 }
1086 1087
1087 scoped_ptr<LayerImpl> LayerImpl::TakeMaskLayer() { 1088 scoped_ptr<LayerImpl> LayerImpl::TakeMaskLayer() {
1088 mask_layer_id_ = -1; 1089 mask_layer_id_ = -1;
1089 return std::move(mask_layer_); 1090 return std::move(mask_layer_);
1090 } 1091 }
1091 1092
1092 void LayerImpl::SetReplicaLayer(scoped_ptr<LayerImpl> replica_layer) { 1093 void LayerImpl::SetReplicaLayer(scoped_ptr<LayerImpl> replica_layer) {
1093 int new_layer_id = replica_layer ? replica_layer->id() : -1; 1094 int new_layer_id = replica_layer ? replica_layer->id() : -1;
1094 1095
1095 if (replica_layer) { 1096 if (replica_layer) {
1096 DCHECK_EQ(layer_tree_impl(), replica_layer->layer_tree_impl()); 1097 DCHECK_EQ(layer_tree_impl(), replica_layer->layer_tree_impl());
1097 DCHECK_NE(new_layer_id, replica_layer_id_); 1098 DCHECK_NE(new_layer_id, replica_layer_id_);
1098 } else if (new_layer_id == replica_layer_id_) { 1099 } else if (new_layer_id == replica_layer_id_) {
1099 return; 1100 return;
1100 } 1101 }
1101 1102
1102 replica_layer_ = std::move(replica_layer); 1103 replica_layer_ = std::move(replica_layer);
1103 replica_layer_id_ = new_layer_id; 1104 replica_layer_id_ = new_layer_id;
1104 if (replica_layer_) 1105 if (replica_layer_)
1105 replica_layer_->SetParent(this); 1106 replica_layer_->SetParent(this);
1106 NoteLayerPropertyChangedForSubtree();
1107 } 1107 }
1108 1108
1109 scoped_ptr<LayerImpl> LayerImpl::TakeReplicaLayer() { 1109 scoped_ptr<LayerImpl> LayerImpl::TakeReplicaLayer() {
1110 replica_layer_id_ = -1; 1110 replica_layer_id_ = -1;
1111 return std::move(replica_layer_); 1111 return std::move(replica_layer_);
1112 } 1112 }
1113 1113
1114 ScrollbarLayerImplBase* LayerImpl::ToScrollbarLayer() { 1114 ScrollbarLayerImplBase* LayerImpl::ToScrollbarLayer() {
1115 return nullptr; 1115 return nullptr;
1116 } 1116 }
1117 1117
1118 void LayerImpl::SetDrawsContent(bool draws_content) { 1118 void LayerImpl::SetDrawsContent(bool draws_content) {
1119 if (draws_content_ == draws_content) 1119 if (draws_content_ == draws_content)
1120 return; 1120 return;
1121 1121
1122 draws_content_ = draws_content; 1122 draws_content_ = draws_content;
1123 NoteLayerPropertyChanged(); 1123 NoteLayerPropertyChanged();
1124 } 1124 }
1125 1125
1126 void LayerImpl::SetHideLayerAndSubtree(bool hide) { 1126 void LayerImpl::SetHideLayerAndSubtree(bool hide) {
1127 if (hide_layer_and_subtree_ == hide) 1127 if (hide_layer_and_subtree_ == hide)
1128 return; 1128 return;
1129 1129
1130 hide_layer_and_subtree_ = hide; 1130 hide_layer_and_subtree_ = hide;
1131 NoteLayerPropertyChangedForSubtree();
1132 } 1131 }
1133 1132
1134 void LayerImpl::SetTransformOrigin(const gfx::Point3F& transform_origin) { 1133 void LayerImpl::SetTransformOrigin(const gfx::Point3F& transform_origin) {
1135 if (transform_origin_ == transform_origin) 1134 if (transform_origin_ == transform_origin)
1136 return; 1135 return;
1137 transform_origin_ = transform_origin; 1136 transform_origin_ = transform_origin;
1138 NoteLayerPropertyChangedForSubtree(); 1137 NoteLayerPropertyChangedForSubtree();
1139 } 1138 }
1140 1139
1141 void LayerImpl::SetBackgroundColor(SkColor background_color) { 1140 void LayerImpl::SetBackgroundColor(SkColor background_color) {
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
1209 1208
1210 background_filters_ = filters; 1209 background_filters_ = filters;
1211 NoteLayerPropertyChanged(); 1210 NoteLayerPropertyChanged();
1212 } 1211 }
1213 1212
1214 void LayerImpl::SetMasksToBounds(bool masks_to_bounds) { 1213 void LayerImpl::SetMasksToBounds(bool masks_to_bounds) {
1215 if (masks_to_bounds_ == masks_to_bounds) 1214 if (masks_to_bounds_ == masks_to_bounds)
1216 return; 1215 return;
1217 1216
1218 masks_to_bounds_ = masks_to_bounds; 1217 masks_to_bounds_ = masks_to_bounds;
1219 NoteLayerPropertyChangedForSubtree();
1220 } 1218 }
1221 1219
1222 void LayerImpl::SetContentsOpaque(bool opaque) { 1220 void LayerImpl::SetContentsOpaque(bool opaque) {
1223 if (contents_opaque_ == opaque) 1221 if (contents_opaque_ == opaque)
1224 return; 1222 return;
1225 1223
1226 contents_opaque_ = opaque; 1224 contents_opaque_ = opaque;
1227 NoteLayerPropertyChangedForSubtree();
1228 } 1225 }
1229 1226
1230 void LayerImpl::SetOpacity(float opacity) { 1227 void LayerImpl::SetOpacity(float opacity) {
1231 if (opacity_ == opacity) 1228 if (opacity_ == opacity)
1232 return; 1229 return;
1233 1230
1234 opacity_ = opacity; 1231 opacity_ = opacity;
1235 NoteLayerPropertyChangedForSubtree(); 1232 NoteLayerPropertyChangedForSubtree();
1236 } 1233 }
1237 1234
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
1292 // If this layer is already in the element map, update its properties. 1289 // If this layer is already in the element map, update its properties.
1293 layer_tree_impl_->AddToElementMap(this); 1290 layer_tree_impl_->AddToElementMap(this);
1294 SetNeedsPushProperties(); 1291 SetNeedsPushProperties();
1295 } 1292 }
1296 1293
1297 void LayerImpl::SetBlendMode(SkXfermode::Mode blend_mode) { 1294 void LayerImpl::SetBlendMode(SkXfermode::Mode blend_mode) {
1298 if (blend_mode_ == blend_mode) 1295 if (blend_mode_ == blend_mode)
1299 return; 1296 return;
1300 1297
1301 blend_mode_ = blend_mode; 1298 blend_mode_ = blend_mode;
1302 NoteLayerPropertyChangedForSubtree();
1303 } 1299 }
1304 1300
1305 void LayerImpl::SetIsRootForIsolatedGroup(bool root) { 1301 void LayerImpl::SetIsRootForIsolatedGroup(bool root) {
1306 if (is_root_for_isolated_group_ == root) 1302 if (is_root_for_isolated_group_ == root)
1307 return; 1303 return;
1308 1304
1309 is_root_for_isolated_group_ = root; 1305 is_root_for_isolated_group_ = root;
1310 SetNeedsPushProperties(); 1306 SetNeedsPushProperties();
1311 } 1307 }
1312 1308
1313 void LayerImpl::SetPosition(const gfx::PointF& position) { 1309 void LayerImpl::SetPosition(const gfx::PointF& position) {
1314 if (position_ == position) 1310 if (position_ == position)
1315 return; 1311 return;
1316 1312
1317 position_ = position; 1313 position_ = position;
1318 NoteLayerPropertyChangedForSubtree(); 1314 NoteLayerPropertyChangedForSubtree();
1319 } 1315 }
1320 1316
1321 void LayerImpl::SetShouldFlattenTransform(bool flatten) { 1317 void LayerImpl::SetShouldFlattenTransform(bool flatten) {
1322 if (should_flatten_transform_ == flatten) 1318 if (should_flatten_transform_ == flatten)
1323 return; 1319 return;
1324 1320
1325 should_flatten_transform_ = flatten; 1321 should_flatten_transform_ = flatten;
1326 NoteLayerPropertyChangedForSubtree();
1327 } 1322 }
1328 1323
1329 void LayerImpl::Set3dSortingContextId(int id) { 1324 void LayerImpl::Set3dSortingContextId(int id) {
1330 if (id == sorting_context_id_) 1325 if (id == sorting_context_id_)
1331 return; 1326 return;
1332 sorting_context_id_ = id; 1327 sorting_context_id_ = id;
1333 NoteLayerPropertyChangedForSubtree();
1334 } 1328 }
1335 1329
1336 void LayerImpl::SetFrameTimingRequests( 1330 void LayerImpl::SetFrameTimingRequests(
1337 const std::vector<FrameTimingRequest>& requests) { 1331 const std::vector<FrameTimingRequest>& requests) {
1338 frame_timing_requests_ = requests; 1332 frame_timing_requests_ = requests;
1339 frame_timing_requests_dirty_ = true; 1333 frame_timing_requests_dirty_ = true;
1340 SetNeedsPushProperties(); 1334 SetNeedsPushProperties();
1341 } 1335 }
1342 1336
1343 void LayerImpl::GatherFrameTimingRequestIds(std::vector<int64_t>* request_ids) { 1337 void LayerImpl::GatherFrameTimingRequestIds(std::vector<int64_t>* request_ids) {
(...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after
1595 if (pending_twin) 1589 if (pending_twin)
1596 pending_twin->DidUpdateScrollOffset(); 1590 pending_twin->DidUpdateScrollOffset();
1597 } 1591 }
1598 } 1592 }
1599 1593
1600 void LayerImpl::SetDoubleSided(bool double_sided) { 1594 void LayerImpl::SetDoubleSided(bool double_sided) {
1601 if (double_sided_ == double_sided) 1595 if (double_sided_ == double_sided)
1602 return; 1596 return;
1603 1597
1604 double_sided_ = double_sided; 1598 double_sided_ = double_sided;
1605 NoteLayerPropertyChangedForSubtree();
1606 } 1599 }
1607 1600
1608 SimpleEnclosedRegion LayerImpl::VisibleOpaqueRegion() const { 1601 SimpleEnclosedRegion LayerImpl::VisibleOpaqueRegion() const {
1609 if (contents_opaque()) 1602 if (contents_opaque())
1610 return SimpleEnclosedRegion(visible_layer_rect()); 1603 return SimpleEnclosedRegion(visible_layer_rect());
1611 return SimpleEnclosedRegion(); 1604 return SimpleEnclosedRegion();
1612 } 1605 }
1613 1606
1614 void LayerImpl::DidBeginTracing() {} 1607 void LayerImpl::DidBeginTracing() {}
1615 1608
(...skipping 302 matching lines...) Expand 10 before | Expand all | Expand 10 after
1918 .layer_transforms_should_scale_layer_contents) { 1911 .layer_transforms_should_scale_layer_contents) {
1919 return default_scale; 1912 return default_scale;
1920 } 1913 }
1921 1914
1922 gfx::Vector2dF transform_scales = MathUtil::ComputeTransform2dScaleComponents( 1915 gfx::Vector2dF transform_scales = MathUtil::ComputeTransform2dScaleComponents(
1923 DrawTransform(), default_scale); 1916 DrawTransform(), default_scale);
1924 return std::max(transform_scales.x(), transform_scales.y()); 1917 return std::max(transform_scales.x(), transform_scales.y());
1925 } 1918 }
1926 1919
1927 } // namespace cc 1920 } // namespace cc
OLDNEW
« no previous file with comments | « cc/layers/layer_impl.h ('k') | cc/layers/layer_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698