| Index: cc/layers/layer_impl.cc
|
| diff --git a/cc/layers/layer_impl.cc b/cc/layers/layer_impl.cc
|
| index 07af9251e79d2f3c029e8c336f0913b45a71aa18..6607c14a98a5eea52284b16e6abd3d7a103aa742 100644
|
| --- a/cc/layers/layer_impl.cc
|
| +++ b/cc/layers/layer_impl.cc
|
| @@ -135,7 +135,7 @@ void LayerImpl::SetDebugInfo(
|
| }
|
|
|
| void LayerImpl::DistributeScroll(ScrollState* scroll_state) {
|
| - ScrollTree& scroll_tree = layer_tree_impl()->property_trees()->scroll_tree;
|
| + ScrollTree& scroll_tree = GetScrollTree();
|
| ScrollNode* scroll_node = scroll_tree.Node(scroll_tree_index());
|
| scroll_tree.DistributeScroll(scroll_node, scroll_state);
|
| }
|
| @@ -153,12 +153,8 @@ void LayerImpl::SetEffectTreeIndex(int index) {
|
| }
|
|
|
| int LayerImpl::render_target_effect_tree_index() const {
|
| - EffectNode* effect_node =
|
| - layer_tree_impl_->property_trees()->effect_tree.Node(effect_tree_index_);
|
| - if (effect_node->render_surface)
|
| - return effect_node->id;
|
| - else
|
| - return effect_node->target_id;
|
| + EffectNode* effect_node = GetEffectTree().Node(effect_tree_index_);
|
| + return effect_node->render_surface ? effect_node->id : effect_node->target_id;
|
| }
|
|
|
| void LayerImpl::SetScrollTreeIndex(int index) {
|
| @@ -286,7 +282,7 @@ void LayerImpl::GetContentsResourceId(ResourceId* resource_id,
|
| }
|
|
|
| gfx::Vector2dF LayerImpl::ScrollBy(const gfx::Vector2dF& scroll) {
|
| - ScrollTree& scroll_tree = layer_tree_impl()->property_trees()->scroll_tree;
|
| + ScrollTree& scroll_tree = GetScrollTree();
|
| ScrollNode* scroll_node = scroll_tree.Node(scroll_tree_index());
|
| return scroll_tree.ScrollBy(scroll_node, scroll, layer_tree_impl());
|
| }
|
| @@ -395,8 +391,7 @@ void LayerImpl::PushPropertiesTo(LayerImpl* layer) {
|
| }
|
|
|
| bool LayerImpl::IsAffectedByPageScale() const {
|
| - TransformTree& transform_tree =
|
| - layer_tree_impl()->property_trees()->transform_tree;
|
| + TransformTree& transform_tree = GetTransformTree();
|
| return transform_tree.Node(transform_tree_index())
|
| ->in_subtree_of_page_scale_layer;
|
| }
|
| @@ -456,21 +451,17 @@ std::unique_ptr<base::DictionaryValue> LayerImpl::LayerTreeAsJson() {
|
|
|
| bool LayerImpl::LayerPropertyChanged() const {
|
| if (layer_property_changed_ ||
|
| - (layer_tree_impl()->property_trees() &&
|
| - layer_tree_impl()->property_trees()->full_tree_damaged))
|
| + (GetPropertyTrees() && GetPropertyTrees()->full_tree_damaged))
|
| return true;
|
| if (transform_tree_index() == TransformTree::kInvalidNodeId)
|
| return false;
|
| TransformNode* transform_node =
|
| - layer_tree_impl()->property_trees()->transform_tree.Node(
|
| - transform_tree_index());
|
| + GetTransformTree().Node(transform_tree_index());
|
| if (transform_node && transform_node->transform_changed)
|
| return true;
|
| if (effect_tree_index() == EffectTree::kInvalidNodeId)
|
| return false;
|
| - EffectNode* effect_node =
|
| - layer_tree_impl()->property_trees()->effect_tree.Node(
|
| - effect_tree_index());
|
| + EffectNode* effect_node = GetEffectTree().Node(effect_tree_index());
|
| if (effect_node && effect_node->effect_changed)
|
| return true;
|
| return false;
|
| @@ -507,18 +498,18 @@ void LayerImpl::ResetChangeTracking() {
|
| }
|
|
|
| int LayerImpl::num_copy_requests_in_target_subtree() {
|
| - return layer_tree_impl()
|
| - ->property_trees()
|
| - ->effect_tree.Node(effect_tree_index())
|
| + return GetEffectTree()
|
| + .Node(effect_tree_index())
|
| ->num_copy_requests_in_subtree;
|
| }
|
|
|
| void LayerImpl::UpdatePropertyTreeTransformIsAnimated(bool is_animated) {
|
| - PropertyTrees* property_trees = layer_tree_impl()->property_trees();
|
| + PropertyTrees* property_trees = GetPropertyTrees();
|
| if (property_trees->IsInIdToIndexMap(PropertyTrees::TreeType::TRANSFORM,
|
| id())) {
|
| - TransformNode* node = property_trees->transform_tree.Node(
|
| - property_trees->transform_id_to_index_map[id()]);
|
| + TransformTree& transform_tree = GetTransformTree();
|
| + TransformNode* node =
|
| + transform_tree.Node(property_trees->transform_id_to_index_map[id()]);
|
| // A LayerImpl's own current state is insufficient for determining whether
|
| // it owns a TransformNode, since this depends on the state of the
|
| // corresponding Layer at the time of the last commit. For example, if
|
| @@ -536,7 +527,7 @@ void LayerImpl::UpdatePropertyTreeTransformIsAnimated(bool is_animated) {
|
| node->has_only_translation_animations = true;
|
| }
|
|
|
| - property_trees->transform_tree.set_needs_update(true);
|
| + transform_tree.set_needs_update(true);
|
| layer_tree_impl()->set_needs_update_draw_properties();
|
| }
|
| }
|
| @@ -559,19 +550,19 @@ gfx::ScrollOffset LayerImpl::ScrollOffsetForAnimation() const {
|
| void LayerImpl::OnIsAnimatingChanged(const PropertyAnimationState& mask,
|
| const PropertyAnimationState& state) {
|
| DCHECK(layer_tree_impl_);
|
| - PropertyTrees* property_trees = layer_tree_impl()->property_trees();
|
| + PropertyTrees* property_trees = GetPropertyTrees();
|
|
|
| TransformNode* transform_node = nullptr;
|
| if (property_trees->IsInIdToIndexMap(PropertyTrees::TreeType::TRANSFORM,
|
| id())) {
|
| - transform_node = property_trees->transform_tree.Node(
|
| + transform_node = GetTransformTree().Node(
|
| property_trees->transform_id_to_index_map[id()]);
|
| }
|
|
|
| EffectNode* effect_node = nullptr;
|
| if (property_trees->IsInIdToIndexMap(PropertyTrees::TreeType::EFFECT, id())) {
|
| - effect_node = property_trees->effect_tree.Node(
|
| - property_trees->effect_id_to_index_map[id()]);
|
| + effect_node =
|
| + GetEffectTree().Node(property_trees->effect_id_to_index_map[id()]);
|
| }
|
|
|
| for (int property = TargetProperty::FIRST_TARGET_PROPERTY;
|
| @@ -597,7 +588,7 @@ void LayerImpl::OnIsAnimatingChanged(const PropertyAnimationState& mask,
|
| if (mask.potentially_animating[property]) {
|
| effect_node->has_potential_opacity_animation =
|
| state.potentially_animating[property];
|
| - property_trees->effect_tree.set_needs_update(true);
|
| + GetEffectTree().set_needs_update(true);
|
| }
|
| }
|
| break;
|
| @@ -650,7 +641,7 @@ void LayerImpl::SetBoundsDelta(const gfx::Vector2dF& bounds_delta) {
|
|
|
| bounds_delta_ = bounds_delta;
|
|
|
| - PropertyTrees* property_trees = layer_tree_impl()->property_trees();
|
| + PropertyTrees* property_trees = GetPropertyTrees();
|
| if (this == layer_tree_impl()->InnerViewportContainerLayer())
|
| property_trees->SetInnerViewportContainerBoundsDelta(bounds_delta);
|
| else if (this == layer_tree_impl()->OuterViewportContainerLayer())
|
| @@ -729,20 +720,20 @@ void LayerImpl::SetContentsOpaque(bool opaque) {
|
| }
|
|
|
| float LayerImpl::Opacity() const {
|
| - PropertyTrees* property_trees = layer_tree_impl()->property_trees();
|
| + PropertyTrees* property_trees = GetPropertyTrees();
|
| if (!property_trees->IsInIdToIndexMap(PropertyTrees::TreeType::EFFECT, id()))
|
| return 1.f;
|
| - EffectNode* node = property_trees->effect_tree.Node(
|
| - property_trees->effect_id_to_index_map[id()]);
|
| + EffectNode* node =
|
| + GetEffectTree().Node(property_trees->effect_id_to_index_map[id()]);
|
| return node->opacity;
|
| }
|
|
|
| const gfx::Transform& LayerImpl::Transform() const {
|
| - PropertyTrees* property_trees = layer_tree_impl()->property_trees();
|
| + PropertyTrees* property_trees = GetPropertyTrees();
|
| DCHECK(property_trees->IsInIdToIndexMap(PropertyTrees::TreeType::TRANSFORM,
|
| id()));
|
| - TransformNode* node = property_trees->transform_tree.Node(
|
| - property_trees->transform_id_to_index_map[id()]);
|
| + TransformNode* node =
|
| + GetTransformTree().Node(property_trees->transform_id_to_index_map[id()]);
|
| return node->local;
|
| }
|
|
|
| @@ -838,21 +829,18 @@ void LayerImpl::AddDamageRect(const gfx::Rect& damage_rect) {
|
|
|
| void LayerImpl::SetCurrentScrollOffset(const gfx::ScrollOffset& scroll_offset) {
|
| DCHECK(IsActive());
|
| - if (layer_tree_impl()->property_trees()->scroll_tree.SetScrollOffset(
|
| - id(), scroll_offset))
|
| + if (GetScrollTree().SetScrollOffset(id(), scroll_offset))
|
| layer_tree_impl()->DidUpdateScrollOffset(id());
|
| }
|
|
|
| gfx::ScrollOffset LayerImpl::CurrentScrollOffset() const {
|
| - return layer_tree_impl()->property_trees()->scroll_tree.current_scroll_offset(
|
| - id());
|
| + return GetScrollTree().current_scroll_offset(id());
|
| }
|
|
|
| void LayerImpl::UpdatePropertyTreeScrollOffset() {
|
| // TODO(enne): in the future, scrolling should update the scroll tree
|
| // directly instead of going through layers.
|
| - TransformTree& transform_tree =
|
| - layer_tree_impl()->property_trees()->transform_tree;
|
| + TransformTree& transform_tree = GetTransformTree();
|
| TransformNode* node = transform_tree.Node(transform_tree_index_);
|
| gfx::ScrollOffset current_offset = CurrentScrollOffset();
|
| if (node->scroll_offset != current_offset) {
|
| @@ -877,8 +865,7 @@ void LayerImpl::ReleaseTileResources() {}
|
| void LayerImpl::RecreateTileResources() {}
|
|
|
| gfx::ScrollOffset LayerImpl::MaxScrollOffset() const {
|
| - return layer_tree_impl()->property_trees()->scroll_tree.MaxScrollOffset(
|
| - scroll_tree_index());
|
| + return GetScrollTree().MaxScrollOffset(scroll_tree_index());
|
| }
|
|
|
| gfx::ScrollOffset LayerImpl::ClampScrollOffsetToLimits(
|
| @@ -1007,13 +994,12 @@ void LayerImpl::SetHasRenderSurface(bool should_have_render_surface) {
|
| gfx::Transform LayerImpl::DrawTransform() const {
|
| // Only drawn layers have up-to-date draw properties.
|
| if (!is_drawn_render_surface_layer_list_member()) {
|
| - if (layer_tree_impl()->property_trees()->non_root_surfaces_enabled) {
|
| - return draw_property_utils::DrawTransform(
|
| - this, layer_tree_impl()->property_trees()->transform_tree,
|
| - layer_tree_impl()->property_trees()->effect_tree);
|
| + if (GetPropertyTrees()->non_root_surfaces_enabled) {
|
| + return draw_property_utils::DrawTransform(this, GetTransformTree(),
|
| + GetEffectTree());
|
| } else {
|
| - return draw_property_utils::ScreenSpaceTransform(
|
| - this, layer_tree_impl()->property_trees()->transform_tree);
|
| + return draw_property_utils::ScreenSpaceTransform(this,
|
| + GetTransformTree());
|
| }
|
| }
|
|
|
| @@ -1023,8 +1009,7 @@ gfx::Transform LayerImpl::DrawTransform() const {
|
| gfx::Transform LayerImpl::ScreenSpaceTransform() const {
|
| // Only drawn layers have up-to-date draw properties.
|
| if (!is_drawn_render_surface_layer_list_member()) {
|
| - return draw_property_utils::ScreenSpaceTransform(
|
| - this, layer_tree_impl()->property_trees()->transform_tree);
|
| + return draw_property_utils::ScreenSpaceTransform(this, GetTransformTree());
|
| }
|
|
|
| return draw_properties().screen_space_transform;
|
| @@ -1038,14 +1023,10 @@ bool LayerImpl::CanUseLCDText() const {
|
| if (!contents_opaque())
|
| return false;
|
|
|
| - if (layer_tree_impl()
|
| - ->property_trees()
|
| - ->effect_tree.Node(effect_tree_index())
|
| - ->screen_space_opacity != 1.f)
|
| + if (GetEffectTree().Node(effect_tree_index())->screen_space_opacity != 1.f)
|
| return false;
|
| - if (!layer_tree_impl()
|
| - ->property_trees()
|
| - ->transform_tree.Node(transform_tree_index())
|
| + if (!GetTransformTree()
|
| + .Node(transform_tree_index())
|
| ->node_and_ancestors_have_only_integer_translation)
|
| return false;
|
| if (static_cast<int>(offset_to_transform_parent().x()) !=
|
| @@ -1075,19 +1056,19 @@ gfx::Rect LayerImpl::GetScaledEnclosingRectInTargetSpace(float scale) const {
|
| }
|
|
|
| RenderSurfaceImpl* LayerImpl::render_target() {
|
| - EffectTree& effect_tree = layer_tree_impl_->property_trees()->effect_tree;
|
| - return effect_tree.Node(render_target_effect_tree_index())->render_surface;
|
| + return GetEffectTree()
|
| + .Node(render_target_effect_tree_index())
|
| + ->render_surface;
|
| }
|
|
|
| const RenderSurfaceImpl* LayerImpl::render_target() const {
|
| - const EffectTree& effect_tree =
|
| - layer_tree_impl_->property_trees()->effect_tree;
|
| - return effect_tree.Node(render_target_effect_tree_index())->render_surface;
|
| + return GetEffectTree()
|
| + .Node(render_target_effect_tree_index())
|
| + ->render_surface;
|
| }
|
|
|
| bool LayerImpl::IsHidden() const {
|
| - EffectTree& effect_tree = layer_tree_impl_->property_trees()->effect_tree;
|
| - EffectNode* node = effect_tree.Node(effect_tree_index_);
|
| + EffectNode* node = GetEffectTree().Node(effect_tree_index_);
|
| return node->screen_space_opacity == 0.f;
|
| }
|
|
|
| @@ -1109,4 +1090,20 @@ float LayerImpl::GetIdealContentsScale() const {
|
| return std::max(transform_scales.x(), transform_scales.y());
|
| }
|
|
|
| +PropertyTrees* LayerImpl::GetPropertyTrees() const {
|
| + return layer_tree_impl_->property_trees();
|
| +}
|
| +
|
| +EffectTree& LayerImpl::GetEffectTree() const {
|
| + return GetPropertyTrees()->effect_tree;
|
| +}
|
| +
|
| +ScrollTree& LayerImpl::GetScrollTree() const {
|
| + return GetPropertyTrees()->scroll_tree;
|
| +}
|
| +
|
| +TransformTree& LayerImpl::GetTransformTree() const {
|
| + return GetPropertyTrees()->transform_tree;
|
| +}
|
| +
|
| } // namespace cc
|
|
|