| 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 "base/json/json_reader.h" | 7 #include "base/json/json_reader.h" |
| 8 #include "base/numerics/safe_conversions.h" | 8 #include "base/numerics/safe_conversions.h" |
| 9 #include "base/strings/stringprintf.h" | 9 #include "base/strings/stringprintf.h" |
| 10 #include "base/trace_event/trace_event.h" | 10 #include "base/trace_event/trace_event.h" |
| 11 #include "base/trace_event/trace_event_argument.h" | 11 #include "base/trace_event/trace_event_argument.h" |
| 12 #include "cc/animation/animation_registrar.h" | 12 #include "cc/animation/animation_registrar.h" |
| 13 #include "cc/animation/mutable_properties.h" |
| 13 #include "cc/base/math_util.h" | 14 #include "cc/base/math_util.h" |
| 14 #include "cc/base/simple_enclosed_region.h" | 15 #include "cc/base/simple_enclosed_region.h" |
| 15 #include "cc/debug/debug_colors.h" | 16 #include "cc/debug/debug_colors.h" |
| 16 #include "cc/debug/layer_tree_debug_state.h" | 17 #include "cc/debug/layer_tree_debug_state.h" |
| 17 #include "cc/debug/micro_benchmark_impl.h" | 18 #include "cc/debug/micro_benchmark_impl.h" |
| 18 #include "cc/debug/traced_value.h" | 19 #include "cc/debug/traced_value.h" |
| 19 #include "cc/input/scroll_state.h" | 20 #include "cc/input/scroll_state.h" |
| 20 #include "cc/layers/layer.h" | 21 #include "cc/layers/layer.h" |
| 21 #include "cc/layers/layer_utils.h" | 22 #include "cc/layers/layer_utils.h" |
| 22 #include "cc/output/copy_output_request.h" | 23 #include "cc/output/copy_output_request.h" |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 77 draw_blend_mode_(SkXfermode::kSrcOver_Mode), | 78 draw_blend_mode_(SkXfermode::kSrcOver_Mode), |
| 78 num_descendants_that_draw_content_(0), | 79 num_descendants_that_draw_content_(0), |
| 79 transform_tree_index_(-1), | 80 transform_tree_index_(-1), |
| 80 effect_tree_index_(-1), | 81 effect_tree_index_(-1), |
| 81 clip_tree_index_(-1), | 82 clip_tree_index_(-1), |
| 82 draw_depth_(0.f), | 83 draw_depth_(0.f), |
| 83 needs_push_properties_(false), | 84 needs_push_properties_(false), |
| 84 num_dependents_need_push_properties_(0), | 85 num_dependents_need_push_properties_(0), |
| 85 sorting_context_id_(0), | 86 sorting_context_id_(0), |
| 86 current_draw_mode_(DRAW_MODE_NONE), | 87 current_draw_mode_(DRAW_MODE_NONE), |
| 88 element_id_(0), |
| 89 mutable_properties_(kMutablePropertyNone), |
| 87 num_layer_or_descendants_with_copy_request_(0), | 90 num_layer_or_descendants_with_copy_request_(0), |
| 88 frame_timing_requests_dirty_(false), | 91 frame_timing_requests_dirty_(false), |
| 89 visited_(false), | 92 visited_(false), |
| 90 layer_or_descendant_is_drawn_(false), | 93 layer_or_descendant_is_drawn_(false), |
| 91 layer_or_descendant_has_input_handler_(false), | 94 layer_or_descendant_has_input_handler_(false), |
| 92 sorted_for_recursion_(false) { | 95 sorted_for_recursion_(false) { |
| 93 DCHECK_GT(layer_id_, 0); | 96 DCHECK_GT(layer_id_, 0); |
| 94 DCHECK(layer_tree_impl_); | 97 DCHECK(layer_tree_impl_); |
| 95 layer_tree_impl_->RegisterLayer(this); | 98 layer_tree_impl_->RegisterLayer(this); |
| 96 | 99 |
| (...skipping 490 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 587 is_container_for_fixed_position_layers_); | 590 is_container_for_fixed_position_layers_); |
| 588 layer->SetPositionConstraint(position_constraint_); | 591 layer->SetPositionConstraint(position_constraint_); |
| 589 layer->SetShouldFlattenTransform(should_flatten_transform_); | 592 layer->SetShouldFlattenTransform(should_flatten_transform_); |
| 590 layer->set_should_flatten_transform_from_property_tree( | 593 layer->set_should_flatten_transform_from_property_tree( |
| 591 should_flatten_transform_from_property_tree_); | 594 should_flatten_transform_from_property_tree_); |
| 592 layer->set_draw_blend_mode(draw_blend_mode_); | 595 layer->set_draw_blend_mode(draw_blend_mode_); |
| 593 layer->SetUseParentBackfaceVisibility(use_parent_backface_visibility_); | 596 layer->SetUseParentBackfaceVisibility(use_parent_backface_visibility_); |
| 594 layer->SetTransformAndInvertibility(transform_, transform_is_invertible_); | 597 layer->SetTransformAndInvertibility(transform_, transform_is_invertible_); |
| 595 | 598 |
| 596 layer->SetScrollClipLayer(scroll_clip_layer_id_); | 599 layer->SetScrollClipLayer(scroll_clip_layer_id_); |
| 600 layer->SetElementId(element_id_); |
| 601 layer->SetMutableProperties(mutable_properties_); |
| 597 layer->set_user_scrollable_horizontal(user_scrollable_horizontal_); | 602 layer->set_user_scrollable_horizontal(user_scrollable_horizontal_); |
| 598 layer->set_user_scrollable_vertical(user_scrollable_vertical_); | 603 layer->set_user_scrollable_vertical(user_scrollable_vertical_); |
| 599 | 604 |
| 600 layer->SetScrollCompensationAdjustment(scroll_compensation_adjustment_); | 605 layer->SetScrollCompensationAdjustment(scroll_compensation_adjustment_); |
| 601 | 606 |
| 602 layer->PushScrollOffset(nullptr); | 607 layer->PushScrollOffset(nullptr); |
| 603 | 608 |
| 604 layer->Set3dSortingContextId(sorting_context_id_); | 609 layer->Set3dSortingContextId(sorting_context_id_); |
| 605 layer->SetNumDescendantsThatDrawContent(num_descendants_that_draw_content_); | 610 layer->SetNumDescendantsThatDrawContent(num_descendants_that_draw_content_); |
| 606 | 611 |
| (...skipping 600 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1207 | 1212 |
| 1208 bool LayerImpl::OpacityIsAnimatingOnImplOnly() const { | 1213 bool LayerImpl::OpacityIsAnimatingOnImplOnly() const { |
| 1209 if (!layer_animation_controller_) | 1214 if (!layer_animation_controller_) |
| 1210 return layer_tree_impl_->OpacityIsAnimatingOnImplOnly(this); | 1215 return layer_tree_impl_->OpacityIsAnimatingOnImplOnly(this); |
| 1211 | 1216 |
| 1212 Animation* opacity_animation = | 1217 Animation* opacity_animation = |
| 1213 layer_animation_controller_->GetAnimation(Animation::OPACITY); | 1218 layer_animation_controller_->GetAnimation(Animation::OPACITY); |
| 1214 return opacity_animation && opacity_animation->is_impl_only(); | 1219 return opacity_animation && opacity_animation->is_impl_only(); |
| 1215 } | 1220 } |
| 1216 | 1221 |
| 1222 void LayerImpl::SetElementId(uint64_t element_id) { |
| 1223 if (element_id == element_id_) |
| 1224 return; |
| 1225 |
| 1226 TRACE_EVENT1(TRACE_DISABLED_BY_DEFAULT("compositor-worker"), |
| 1227 "LayerImpl::SetElementId", "id", element_id); |
| 1228 |
| 1229 element_id_ = element_id; |
| 1230 SetNeedsPushProperties(); |
| 1231 } |
| 1232 |
| 1233 void LayerImpl::SetMutableProperties(uint32_t properties) { |
| 1234 if (mutable_properties_ == properties) |
| 1235 return; |
| 1236 |
| 1237 TRACE_EVENT1(TRACE_DISABLED_BY_DEFAULT("compositor-worker"), |
| 1238 "LayerImpl::SetMutableProperties", "properties", properties); |
| 1239 |
| 1240 mutable_properties_ = properties; |
| 1241 SetNeedsPushProperties(); |
| 1242 } |
| 1243 |
| 1217 void LayerImpl::SetBlendMode(SkXfermode::Mode blend_mode) { | 1244 void LayerImpl::SetBlendMode(SkXfermode::Mode blend_mode) { |
| 1218 if (blend_mode_ == blend_mode) | 1245 if (blend_mode_ == blend_mode) |
| 1219 return; | 1246 return; |
| 1220 | 1247 |
| 1221 blend_mode_ = blend_mode; | 1248 blend_mode_ = blend_mode; |
| 1222 NoteLayerPropertyChangedForSubtree(); | 1249 NoteLayerPropertyChangedForSubtree(); |
| 1223 } | 1250 } |
| 1224 | 1251 |
| 1225 void LayerImpl::SetIsRootForIsolatedGroup(bool root) { | 1252 void LayerImpl::SetIsRootForIsolatedGroup(bool root) { |
| 1226 if (is_root_for_isolated_group_ == root) | 1253 if (is_root_for_isolated_group_ == root) |
| (...skipping 394 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1621 MathUtil::AddToTracedValue("bounds", bounds_, state); | 1648 MathUtil::AddToTracedValue("bounds", bounds_, state); |
| 1622 | 1649 |
| 1623 state->SetDouble("opacity", opacity()); | 1650 state->SetDouble("opacity", opacity()); |
| 1624 | 1651 |
| 1625 MathUtil::AddToTracedValue("position", position_, state); | 1652 MathUtil::AddToTracedValue("position", position_, state); |
| 1626 | 1653 |
| 1627 state->SetInteger("draws_content", DrawsContent()); | 1654 state->SetInteger("draws_content", DrawsContent()); |
| 1628 state->SetInteger("gpu_memory_usage", | 1655 state->SetInteger("gpu_memory_usage", |
| 1629 base::saturated_cast<int>(GPUMemoryUsageInBytes())); | 1656 base::saturated_cast<int>(GPUMemoryUsageInBytes())); |
| 1630 | 1657 |
| 1658 if (mutable_properties_ != kMutablePropertyNone) { |
| 1659 state->SetInteger("element_id", base::saturated_cast<int>(element_id_)); |
| 1660 state->SetInteger("mutable_properties", mutable_properties_); |
| 1661 } |
| 1662 |
| 1631 MathUtil::AddToTracedValue( | 1663 MathUtil::AddToTracedValue( |
| 1632 "scroll_offset", scroll_offset_ ? scroll_offset_->Current(IsActive()) | 1664 "scroll_offset", scroll_offset_ ? scroll_offset_->Current(IsActive()) |
| 1633 : gfx::ScrollOffset(), | 1665 : gfx::ScrollOffset(), |
| 1634 state); | 1666 state); |
| 1635 | 1667 |
| 1636 MathUtil::AddToTracedValue("transform_origin", transform_origin_, state); | 1668 MathUtil::AddToTracedValue("transform_origin", transform_origin_, state); |
| 1637 | 1669 |
| 1638 bool clipped; | 1670 bool clipped; |
| 1639 gfx::QuadF layer_quad = | 1671 gfx::QuadF layer_quad = |
| 1640 MathUtil::MapQuad(screen_space_transform(), | 1672 MathUtil::MapQuad(screen_space_transform(), |
| (...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1805 } | 1837 } |
| 1806 | 1838 |
| 1807 // TODO(enne): the transform needs to come from property trees instead of | 1839 // TODO(enne): the transform needs to come from property trees instead of |
| 1808 // draw properties. | 1840 // draw properties. |
| 1809 gfx::Vector2dF transform_scales = MathUtil::ComputeTransform2dScaleComponents( | 1841 gfx::Vector2dF transform_scales = MathUtil::ComputeTransform2dScaleComponents( |
| 1810 draw_properties().target_space_transform, default_scale); | 1842 draw_properties().target_space_transform, default_scale); |
| 1811 return std::max(transform_scales.x(), transform_scales.y()); | 1843 return std::max(transform_scales.x(), transform_scales.y()); |
| 1812 } | 1844 } |
| 1813 | 1845 |
| 1814 } // namespace cc | 1846 } // namespace cc |
| OLD | NEW |