| 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> |
| 11 #include <utility> | 11 #include <utility> |
| 12 | 12 |
| 13 #include "base/json/json_reader.h" | 13 #include "base/json/json_reader.h" |
| 14 #include "base/memory/ptr_util.h" |
| 14 #include "base/numerics/safe_conversions.h" | 15 #include "base/numerics/safe_conversions.h" |
| 15 #include "base/strings/stringprintf.h" | 16 #include "base/strings/stringprintf.h" |
| 16 #include "base/trace_event/trace_event.h" | 17 #include "base/trace_event/trace_event.h" |
| 17 #include "base/trace_event/trace_event_argument.h" | 18 #include "base/trace_event/trace_event_argument.h" |
| 18 #include "cc/animation/mutable_properties.h" | 19 #include "cc/animation/mutable_properties.h" |
| 19 #include "cc/base/math_util.h" | 20 #include "cc/base/math_util.h" |
| 20 #include "cc/base/simple_enclosed_region.h" | 21 #include "cc/base/simple_enclosed_region.h" |
| 21 #include "cc/debug/debug_colors.h" | 22 #include "cc/debug/debug_colors.h" |
| 22 #include "cc/debug/layer_tree_debug_state.h" | 23 #include "cc/debug/layer_tree_debug_state.h" |
| 23 #include "cc/debug/micro_benchmark_impl.h" | 24 #include "cc/debug/micro_benchmark_impl.h" |
| (...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 116 TRACE_EVENT_OBJECT_DELETED_WITH_ID( | 117 TRACE_EVENT_OBJECT_DELETED_WITH_ID( |
| 117 TRACE_DISABLED_BY_DEFAULT("cc.debug"), "cc::LayerImpl", this); | 118 TRACE_DISABLED_BY_DEFAULT("cc.debug"), "cc::LayerImpl", this); |
| 118 | 119 |
| 119 if (mask_layer_) | 120 if (mask_layer_) |
| 120 layer_tree_impl_->RemoveLayer(mask_layer_id_); | 121 layer_tree_impl_->RemoveLayer(mask_layer_id_); |
| 121 if (replica_layer_) | 122 if (replica_layer_) |
| 122 layer_tree_impl_->RemoveLayer(replica_layer_id_); | 123 layer_tree_impl_->RemoveLayer(replica_layer_id_); |
| 123 ClearChildList(); | 124 ClearChildList(); |
| 124 } | 125 } |
| 125 | 126 |
| 126 void LayerImpl::AddChild(scoped_ptr<LayerImpl> child) { | 127 void LayerImpl::AddChild(std::unique_ptr<LayerImpl> child) { |
| 127 child->SetParent(this); | 128 child->SetParent(this); |
| 128 DCHECK_EQ(layer_tree_impl(), child->layer_tree_impl()); | 129 DCHECK_EQ(layer_tree_impl(), child->layer_tree_impl()); |
| 129 children_.push_back(child.get()); | 130 children_.push_back(child.get()); |
| 130 layer_tree_impl_->AddLayer(std::move(child)); | 131 layer_tree_impl_->AddLayer(std::move(child)); |
| 131 } | 132 } |
| 132 | 133 |
| 133 scoped_ptr<LayerImpl> LayerImpl::RemoveChildForTesting(LayerImpl* child) { | 134 std::unique_ptr<LayerImpl> LayerImpl::RemoveChildForTesting(LayerImpl* child) { |
| 134 auto it = std::find(children_.begin(), children_.end(), child); | 135 auto it = std::find(children_.begin(), children_.end(), child); |
| 135 if (it != children_.end()) | 136 if (it != children_.end()) |
| 136 children_.erase(it); | 137 children_.erase(it); |
| 137 return layer_tree_impl_->RemoveLayer(child->id()); | 138 return layer_tree_impl_->RemoveLayer(child->id()); |
| 138 } | 139 } |
| 139 | 140 |
| 140 void LayerImpl::SetParent(LayerImpl* parent) { | 141 void LayerImpl::SetParent(LayerImpl* parent) { |
| 141 parent_ = parent; | 142 parent_ = parent; |
| 142 } | 143 } |
| 143 | 144 |
| (...skipping 16 matching lines...) Expand all Loading... |
| 160 return; | 161 return; |
| 161 | 162 |
| 162 if (parent) | 163 if (parent) |
| 163 DCHECK_EQ(layer_tree_impl()->LayerById(parent->id()), parent); | 164 DCHECK_EQ(layer_tree_impl()->LayerById(parent->id()), parent); |
| 164 | 165 |
| 165 scroll_parent_ = parent; | 166 scroll_parent_ = parent; |
| 166 SetNeedsPushProperties(); | 167 SetNeedsPushProperties(); |
| 167 } | 168 } |
| 168 | 169 |
| 169 void LayerImpl::SetDebugInfo( | 170 void LayerImpl::SetDebugInfo( |
| 170 scoped_ptr<base::trace_event::ConvertableToTraceFormat> debug_info) { | 171 std::unique_ptr<base::trace_event::ConvertableToTraceFormat> debug_info) { |
| 171 owned_debug_info_ = std::move(debug_info); | 172 owned_debug_info_ = std::move(debug_info); |
| 172 debug_info_ = owned_debug_info_.get(); | 173 debug_info_ = owned_debug_info_.get(); |
| 173 SetNeedsPushProperties(); | 174 SetNeedsPushProperties(); |
| 174 } | 175 } |
| 175 | 176 |
| 176 void LayerImpl::SetScrollChildren(std::set<LayerImpl*>* children) { | 177 void LayerImpl::SetScrollChildren(std::set<LayerImpl*>* children) { |
| 177 if (scroll_children_.get() == children) | 178 if (scroll_children_.get() == children) |
| 178 return; | 179 return; |
| 179 scroll_children_.reset(children); | 180 scroll_children_.reset(children); |
| 180 SetNeedsPushProperties(); | 181 SetNeedsPushProperties(); |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 242 effect_tree_index_ = index; | 243 effect_tree_index_ = index; |
| 243 SetNeedsPushProperties(); | 244 SetNeedsPushProperties(); |
| 244 } | 245 } |
| 245 | 246 |
| 246 void LayerImpl::SetScrollTreeIndex(int index) { | 247 void LayerImpl::SetScrollTreeIndex(int index) { |
| 247 scroll_tree_index_ = index; | 248 scroll_tree_index_ = index; |
| 248 SetNeedsPushProperties(); | 249 SetNeedsPushProperties(); |
| 249 } | 250 } |
| 250 | 251 |
| 251 void LayerImpl::PassCopyRequests( | 252 void LayerImpl::PassCopyRequests( |
| 252 std::vector<scoped_ptr<CopyOutputRequest>>* requests) { | 253 std::vector<std::unique_ptr<CopyOutputRequest>>* requests) { |
| 253 // In the case that a layer still has a copy request, this means that there's | 254 // In the case that a layer still has a copy request, this means that there's |
| 254 // a commit to the active tree without a draw. This only happens in some | 255 // a commit to the active tree without a draw. This only happens in some |
| 255 // edge cases during lost context or visibility changes, so don't try to | 256 // edge cases during lost context or visibility changes, so don't try to |
| 256 // handle preserving these output requests (and their surface). | 257 // handle preserving these output requests (and their surface). |
| 257 if (!copy_requests_.empty()) { | 258 if (!copy_requests_.empty()) { |
| 258 layer_tree_impl()->RemoveLayerWithCopyOutputRequest(this); | 259 layer_tree_impl()->RemoveLayerWithCopyOutputRequest(this); |
| 259 // Destroying these will abort them. | 260 // Destroying these will abort them. |
| 260 copy_requests_.clear(); | 261 copy_requests_.clear(); |
| 261 } | 262 } |
| 262 | 263 |
| 263 if (requests->empty()) | 264 if (requests->empty()) |
| 264 return; | 265 return; |
| 265 | 266 |
| 266 bool was_empty = copy_requests_.empty(); | 267 bool was_empty = copy_requests_.empty(); |
| 267 for (auto& request : *requests) | 268 for (auto& request : *requests) |
| 268 copy_requests_.push_back(std::move(request)); | 269 copy_requests_.push_back(std::move(request)); |
| 269 requests->clear(); | 270 requests->clear(); |
| 270 | 271 |
| 271 if (was_empty && layer_tree_impl()->IsActiveTree()) | 272 if (was_empty && layer_tree_impl()->IsActiveTree()) |
| 272 layer_tree_impl()->AddLayerWithCopyOutputRequest(this); | 273 layer_tree_impl()->AddLayerWithCopyOutputRequest(this); |
| 273 } | 274 } |
| 274 | 275 |
| 275 void LayerImpl::TakeCopyRequestsAndTransformToTarget( | 276 void LayerImpl::TakeCopyRequestsAndTransformToTarget( |
| 276 std::vector<scoped_ptr<CopyOutputRequest>>* requests) { | 277 std::vector<std::unique_ptr<CopyOutputRequest>>* requests) { |
| 277 DCHECK(!copy_requests_.empty()); | 278 DCHECK(!copy_requests_.empty()); |
| 278 DCHECK(layer_tree_impl()->IsActiveTree()); | 279 DCHECK(layer_tree_impl()->IsActiveTree()); |
| 279 DCHECK_EQ(render_target(), this); | 280 DCHECK_EQ(render_target(), this); |
| 280 | 281 |
| 281 size_t first_inserted_request = requests->size(); | 282 size_t first_inserted_request = requests->size(); |
| 282 for (auto& request : copy_requests_) | 283 for (auto& request : copy_requests_) |
| 283 requests->push_back(std::move(request)); | 284 requests->push_back(std::move(request)); |
| 284 copy_requests_.clear(); | 285 copy_requests_.clear(); |
| 285 | 286 |
| 286 for (size_t i = first_inserted_request; i < requests->size(); ++i) { | 287 for (size_t i = first_inserted_request; i < requests->size(); ++i) { |
| (...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 454 | 455 |
| 455 void LayerImpl::set_user_scrollable_vertical(bool scrollable) { | 456 void LayerImpl::set_user_scrollable_vertical(bool scrollable) { |
| 456 user_scrollable_vertical_ = scrollable; | 457 user_scrollable_vertical_ = scrollable; |
| 457 } | 458 } |
| 458 | 459 |
| 459 bool LayerImpl::user_scrollable(ScrollbarOrientation orientation) const { | 460 bool LayerImpl::user_scrollable(ScrollbarOrientation orientation) const { |
| 460 return (orientation == HORIZONTAL) ? user_scrollable_horizontal_ | 461 return (orientation == HORIZONTAL) ? user_scrollable_horizontal_ |
| 461 : user_scrollable_vertical_; | 462 : user_scrollable_vertical_; |
| 462 } | 463 } |
| 463 | 464 |
| 464 scoped_ptr<LayerImpl> LayerImpl::CreateLayerImpl(LayerTreeImpl* tree_impl) { | 465 std::unique_ptr<LayerImpl> LayerImpl::CreateLayerImpl( |
| 466 LayerTreeImpl* tree_impl) { |
| 465 return LayerImpl::Create(tree_impl, layer_id_); | 467 return LayerImpl::Create(tree_impl, layer_id_); |
| 466 } | 468 } |
| 467 | 469 |
| 468 void LayerImpl::set_main_thread_scrolling_reasons( | 470 void LayerImpl::set_main_thread_scrolling_reasons( |
| 469 uint32_t main_thread_scrolling_reasons) { | 471 uint32_t main_thread_scrolling_reasons) { |
| 470 if (main_thread_scrolling_reasons_ == main_thread_scrolling_reasons) | 472 if (main_thread_scrolling_reasons_ == main_thread_scrolling_reasons) |
| 471 return; | 473 return; |
| 472 | 474 |
| 473 if (main_thread_scrolling_reasons & | 475 if (main_thread_scrolling_reasons & |
| 474 MainThreadScrollingReason::kHasNonLayerViewportConstrainedObjects && | 476 MainThreadScrollingReason::kHasNonLayerViewportConstrainedObjects && |
| (...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 644 | 646 |
| 645 result->SetBoolean("DrawsContent", draws_content_); | 647 result->SetBoolean("DrawsContent", draws_content_); |
| 646 result->SetBoolean("Is3dSorted", Is3dSorted()); | 648 result->SetBoolean("Is3dSorted", Is3dSorted()); |
| 647 result->SetDouble("OPACITY", opacity()); | 649 result->SetDouble("OPACITY", opacity()); |
| 648 result->SetBoolean("ContentsOpaque", contents_opaque_); | 650 result->SetBoolean("ContentsOpaque", contents_opaque_); |
| 649 | 651 |
| 650 if (scrollable()) | 652 if (scrollable()) |
| 651 result->SetBoolean("Scrollable", true); | 653 result->SetBoolean("Scrollable", true); |
| 652 | 654 |
| 653 if (!touch_event_handler_region_.IsEmpty()) { | 655 if (!touch_event_handler_region_.IsEmpty()) { |
| 654 scoped_ptr<base::Value> region = touch_event_handler_region_.AsValue(); | 656 std::unique_ptr<base::Value> region = touch_event_handler_region_.AsValue(); |
| 655 result->Set("TouchRegion", region.release()); | 657 result->Set("TouchRegion", region.release()); |
| 656 } | 658 } |
| 657 | 659 |
| 658 list = new base::ListValue; | 660 list = new base::ListValue; |
| 659 for (size_t i = 0; i < children_.size(); ++i) | 661 for (size_t i = 0; i < children_.size(); ++i) |
| 660 list->Append(children_[i]->LayerTreeAsJson()); | 662 list->Append(children_[i]->LayerTreeAsJson()); |
| 661 result->Set("Children", list); | 663 result->Set("Children", list); |
| 662 | 664 |
| 663 return result; | 665 return result; |
| 664 } | 666 } |
| (...skipping 307 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 972 gfx::PointF() + offset_to_transform_parent(), gfx::SizeF(bounds())); | 974 gfx::PointF() + offset_to_transform_parent(), gfx::SizeF(bounds())); |
| 973 property_trees->clip_tree.set_needs_update(true); | 975 property_trees->clip_tree.set_needs_update(true); |
| 974 } | 976 } |
| 975 property_trees->full_tree_damaged = true; | 977 property_trees->full_tree_damaged = true; |
| 976 layer_tree_impl()->set_needs_update_draw_properties(); | 978 layer_tree_impl()->set_needs_update_draw_properties(); |
| 977 } else { | 979 } else { |
| 978 NoteLayerPropertyChanged(); | 980 NoteLayerPropertyChanged(); |
| 979 } | 981 } |
| 980 } | 982 } |
| 981 | 983 |
| 982 void LayerImpl::SetMaskLayer(scoped_ptr<LayerImpl> mask_layer) { | 984 void LayerImpl::SetMaskLayer(std::unique_ptr<LayerImpl> mask_layer) { |
| 983 int new_layer_id = mask_layer ? mask_layer->id() : -1; | 985 int new_layer_id = mask_layer ? mask_layer->id() : -1; |
| 984 | 986 |
| 985 if (mask_layer) { | 987 if (mask_layer) { |
| 986 DCHECK_EQ(layer_tree_impl(), mask_layer->layer_tree_impl()); | 988 DCHECK_EQ(layer_tree_impl(), mask_layer->layer_tree_impl()); |
| 987 DCHECK_NE(new_layer_id, mask_layer_id_); | 989 DCHECK_NE(new_layer_id, mask_layer_id_); |
| 988 } else if (new_layer_id == mask_layer_id_) { | 990 } else if (new_layer_id == mask_layer_id_) { |
| 989 return; | 991 return; |
| 990 } | 992 } |
| 991 | 993 |
| 992 if (mask_layer_) | 994 if (mask_layer_) |
| 993 layer_tree_impl_->RemoveLayer(mask_layer_->id()); | 995 layer_tree_impl_->RemoveLayer(mask_layer_->id()); |
| 994 mask_layer_ = mask_layer.get(); | 996 mask_layer_ = mask_layer.get(); |
| 995 if (mask_layer_) | 997 if (mask_layer_) |
| 996 layer_tree_impl_->AddLayer(std::move(mask_layer)); | 998 layer_tree_impl_->AddLayer(std::move(mask_layer)); |
| 997 | 999 |
| 998 mask_layer_id_ = new_layer_id; | 1000 mask_layer_id_ = new_layer_id; |
| 999 } | 1001 } |
| 1000 | 1002 |
| 1001 scoped_ptr<LayerImpl> LayerImpl::TakeMaskLayer() { | 1003 std::unique_ptr<LayerImpl> LayerImpl::TakeMaskLayer() { |
| 1002 mask_layer_id_ = -1; | 1004 mask_layer_id_ = -1; |
| 1003 scoped_ptr<LayerImpl> ret; | 1005 std::unique_ptr<LayerImpl> ret; |
| 1004 if (mask_layer_) | 1006 if (mask_layer_) |
| 1005 ret = layer_tree_impl_->RemoveLayer(mask_layer_->id()); | 1007 ret = layer_tree_impl_->RemoveLayer(mask_layer_->id()); |
| 1006 mask_layer_ = nullptr; | 1008 mask_layer_ = nullptr; |
| 1007 return ret; | 1009 return ret; |
| 1008 } | 1010 } |
| 1009 | 1011 |
| 1010 void LayerImpl::SetReplicaLayer(scoped_ptr<LayerImpl> replica_layer) { | 1012 void LayerImpl::SetReplicaLayer(std::unique_ptr<LayerImpl> replica_layer) { |
| 1011 int new_layer_id = replica_layer ? replica_layer->id() : -1; | 1013 int new_layer_id = replica_layer ? replica_layer->id() : -1; |
| 1012 | 1014 |
| 1013 if (replica_layer) { | 1015 if (replica_layer) { |
| 1014 DCHECK_EQ(layer_tree_impl(), replica_layer->layer_tree_impl()); | 1016 DCHECK_EQ(layer_tree_impl(), replica_layer->layer_tree_impl()); |
| 1015 DCHECK_NE(new_layer_id, replica_layer_id_); | 1017 DCHECK_NE(new_layer_id, replica_layer_id_); |
| 1016 } else if (new_layer_id == replica_layer_id_) { | 1018 } else if (new_layer_id == replica_layer_id_) { |
| 1017 return; | 1019 return; |
| 1018 } | 1020 } |
| 1019 | 1021 |
| 1020 if (replica_layer_) | 1022 if (replica_layer_) |
| 1021 layer_tree_impl_->RemoveLayer(replica_layer_->id()); | 1023 layer_tree_impl_->RemoveLayer(replica_layer_->id()); |
| 1022 replica_layer_ = replica_layer.get(); | 1024 replica_layer_ = replica_layer.get(); |
| 1023 if (replica_layer_) | 1025 if (replica_layer_) |
| 1024 layer_tree_impl_->AddLayer(std::move(replica_layer)); | 1026 layer_tree_impl_->AddLayer(std::move(replica_layer)); |
| 1025 | 1027 |
| 1026 replica_layer_id_ = new_layer_id; | 1028 replica_layer_id_ = new_layer_id; |
| 1027 } | 1029 } |
| 1028 | 1030 |
| 1029 scoped_ptr<LayerImpl> LayerImpl::TakeReplicaLayer() { | 1031 std::unique_ptr<LayerImpl> LayerImpl::TakeReplicaLayer() { |
| 1030 replica_layer_id_ = -1; | 1032 replica_layer_id_ = -1; |
| 1031 scoped_ptr<LayerImpl> ret; | 1033 std::unique_ptr<LayerImpl> ret; |
| 1032 if (replica_layer_) | 1034 if (replica_layer_) |
| 1033 ret = layer_tree_impl_->RemoveLayer(replica_layer_->id()); | 1035 ret = layer_tree_impl_->RemoveLayer(replica_layer_->id()); |
| 1034 replica_layer_ = nullptr; | 1036 replica_layer_ = nullptr; |
| 1035 return ret; | 1037 return ret; |
| 1036 } | 1038 } |
| 1037 | 1039 |
| 1038 ScrollbarLayerImplBase* LayerImpl::ToScrollbarLayer() { | 1040 ScrollbarLayerImplBase* LayerImpl::ToScrollbarLayer() { |
| 1039 return nullptr; | 1041 return nullptr; |
| 1040 } | 1042 } |
| 1041 | 1043 |
| (...skipping 420 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1462 layer_tree_impl_->HasAnimationThatInflatesBounds(this)); | 1464 layer_tree_impl_->HasAnimationThatInflatesBounds(this)); |
| 1463 | 1465 |
| 1464 gfx::BoxF box; | 1466 gfx::BoxF box; |
| 1465 if (LayerUtils::GetAnimationBounds(*this, &box)) | 1467 if (LayerUtils::GetAnimationBounds(*this, &box)) |
| 1466 MathUtil::AddToTracedValue("animation_bounds", box, state); | 1468 MathUtil::AddToTracedValue("animation_bounds", box, state); |
| 1467 | 1469 |
| 1468 if (debug_info_) { | 1470 if (debug_info_) { |
| 1469 std::string str; | 1471 std::string str; |
| 1470 debug_info_->AppendAsTraceFormat(&str); | 1472 debug_info_->AppendAsTraceFormat(&str); |
| 1471 base::JSONReader json_reader; | 1473 base::JSONReader json_reader; |
| 1472 scoped_ptr<base::Value> debug_info_value(json_reader.ReadToValue(str)); | 1474 std::unique_ptr<base::Value> debug_info_value(json_reader.ReadToValue(str)); |
| 1473 | 1475 |
| 1474 if (debug_info_value->IsType(base::Value::TYPE_DICTIONARY)) { | 1476 if (debug_info_value->IsType(base::Value::TYPE_DICTIONARY)) { |
| 1475 base::DictionaryValue* dictionary_value = nullptr; | 1477 base::DictionaryValue* dictionary_value = nullptr; |
| 1476 bool converted_to_dictionary = | 1478 bool converted_to_dictionary = |
| 1477 debug_info_value->GetAsDictionary(&dictionary_value); | 1479 debug_info_value->GetAsDictionary(&dictionary_value); |
| 1478 DCHECK(converted_to_dictionary); | 1480 DCHECK(converted_to_dictionary); |
| 1479 for (base::DictionaryValue::Iterator it(*dictionary_value); !it.IsAtEnd(); | 1481 for (base::DictionaryValue::Iterator it(*dictionary_value); !it.IsAtEnd(); |
| 1480 it.Advance()) { | 1482 it.Advance()) { |
| 1481 state->SetValue(it.key().data(), it.value().CreateDeepCopy()); | 1483 state->SetValue(it.key().data(), it.value().CreateDeepCopy()); |
| 1482 } | 1484 } |
| (...skipping 28 matching lines...) Expand all Loading... |
| 1511 int LayerImpl::NumDescendantsThatDrawContent() const { | 1513 int LayerImpl::NumDescendantsThatDrawContent() const { |
| 1512 return num_descendants_that_draw_content_; | 1514 return num_descendants_that_draw_content_; |
| 1513 } | 1515 } |
| 1514 | 1516 |
| 1515 void LayerImpl::SetHasRenderSurface(bool should_have_render_surface) { | 1517 void LayerImpl::SetHasRenderSurface(bool should_have_render_surface) { |
| 1516 if (!!render_surface() == should_have_render_surface) | 1518 if (!!render_surface() == should_have_render_surface) |
| 1517 return; | 1519 return; |
| 1518 | 1520 |
| 1519 SetNeedsPushProperties(); | 1521 SetNeedsPushProperties(); |
| 1520 if (should_have_render_surface) { | 1522 if (should_have_render_surface) { |
| 1521 render_surface_ = make_scoped_ptr(new RenderSurfaceImpl(this)); | 1523 render_surface_ = base::WrapUnique(new RenderSurfaceImpl(this)); |
| 1522 return; | 1524 return; |
| 1523 } | 1525 } |
| 1524 render_surface_.reset(); | 1526 render_surface_.reset(); |
| 1525 } | 1527 } |
| 1526 | 1528 |
| 1527 gfx::Transform LayerImpl::DrawTransform() const { | 1529 gfx::Transform LayerImpl::DrawTransform() const { |
| 1528 // Only drawn layers have up-to-date draw properties. | 1530 // Only drawn layers have up-to-date draw properties. |
| 1529 if (!IsDrawnRenderSurfaceLayerListMember()) { | 1531 if (!IsDrawnRenderSurfaceLayerListMember()) { |
| 1530 if (layer_tree_impl()->property_trees()->non_root_surfaces_enabled) { | 1532 if (layer_tree_impl()->property_trees()->non_root_surfaces_enabled) { |
| 1531 return draw_property_utils::DrawTransform( | 1533 return draw_property_utils::DrawTransform( |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1611 .layer_transforms_should_scale_layer_contents) { | 1613 .layer_transforms_should_scale_layer_contents) { |
| 1612 return default_scale; | 1614 return default_scale; |
| 1613 } | 1615 } |
| 1614 | 1616 |
| 1615 gfx::Vector2dF transform_scales = MathUtil::ComputeTransform2dScaleComponents( | 1617 gfx::Vector2dF transform_scales = MathUtil::ComputeTransform2dScaleComponents( |
| 1616 DrawTransform(), default_scale); | 1618 DrawTransform(), default_scale); |
| 1617 return std::max(transform_scales.x(), transform_scales.y()); | 1619 return std::max(transform_scales.x(), transform_scales.y()); |
| 1618 } | 1620 } |
| 1619 | 1621 |
| 1620 } // namespace cc | 1622 } // namespace cc |
| OLD | NEW |