| Index: cc/trees/layer_tree_impl.cc
|
| diff --git a/cc/trees/layer_tree_impl.cc b/cc/trees/layer_tree_impl.cc
|
| index af36eda997beba1412eeee5a56093d82aa2e2ff4..f666f16ed84bf8680299f45ee16e64cc6ee321c8 100644
|
| --- a/cc/trees/layer_tree_impl.cc
|
| +++ b/cc/trees/layer_tree_impl.cc
|
| @@ -24,9 +24,9 @@
|
| #include "cc/debug/traced_value.h"
|
| #include "cc/input/page_scale_animation.h"
|
| #include "cc/input/scrollbar_animation_controller.h"
|
| +#include "cc/layers/effect_tree_layer_list_iterator.h"
|
| #include "cc/layers/heads_up_display_layer_impl.h"
|
| #include "cc/layers/layer.h"
|
| -#include "cc/layers/layer_iterator.h"
|
| #include "cc/layers/layer_list_iterator.h"
|
| #include "cc/layers/render_surface_impl.h"
|
| #include "cc/layers/scrollbar_layer_impl_base.h"
|
| @@ -1127,24 +1127,23 @@ bool LayerTreeImpl::UpdateDrawProperties(bool update_lcd_text) {
|
| occlusion_tracker.set_minimum_tracking_size(
|
| settings().minimum_occlusion_tracking_size);
|
|
|
| - // LayerIterator is used here instead of CallFunctionForEveryLayer to only
|
| - // UpdateTilePriorities on layers that will be visible (and thus have valid
|
| - // draw properties) and not because any ordering is required.
|
| - LayerIterator end = LayerIterator::End(&render_surface_layer_list_);
|
| - for (LayerIterator it = LayerIterator::Begin(&render_surface_layer_list_);
|
| - it != end; ++it) {
|
| + for (EffectTreeLayerListIterator it(this);
|
| + it.state() != EffectTreeLayerListIterator::State::END; ++it) {
|
| occlusion_tracker.EnterLayer(it);
|
|
|
| - if (it.represents_itself()) {
|
| - it->draw_properties().occlusion_in_content_space =
|
| - occlusion_tracker.GetCurrentOcclusionForLayer(it->DrawTransform());
|
| + if (it.state() == EffectTreeLayerListIterator::State::LAYER) {
|
| + LayerImpl* layer = it.current_layer();
|
| + layer->draw_properties().occlusion_in_content_space =
|
| + occlusion_tracker.GetCurrentOcclusionForLayer(
|
| + layer->DrawTransform());
|
| }
|
|
|
| - if (it.represents_contributing_render_surface()) {
|
| + if (it.state() ==
|
| + EffectTreeLayerListIterator::State::CONTRIBUTING_SURFACE) {
|
| const RenderSurfaceImpl* occlusion_surface =
|
| occlusion_tracker.OcclusionSurfaceForContributingSurface();
|
| gfx::Transform draw_transform;
|
| - RenderSurfaceImpl* render_surface = it->GetRenderSurface();
|
| + RenderSurfaceImpl* render_surface = it.current_render_surface();
|
| if (occlusion_surface) {
|
| // We are calculating transform between two render surfaces. So, we
|
| // need to apply the surface contents scale at target and remove the
|
| @@ -1168,7 +1167,7 @@ bool LayerTreeImpl::UpdateDrawProperties(bool update_lcd_text) {
|
| if (LayerImpl* mask = render_surface->MaskLayer()) {
|
| mask->draw_properties().occlusion_in_content_space =
|
| occlusion_tracker.GetCurrentOcclusionForContributingSurface(
|
| - draw_transform * it->DrawTransform());
|
| + draw_transform * render_surface->SurfaceScale());
|
| }
|
| }
|
|
|
| @@ -1528,12 +1527,10 @@ void LayerTreeImpl::SetNeedsRedraw() {
|
|
|
| void LayerTreeImpl::GetAllPrioritizedTilesForTracing(
|
| std::vector<PrioritizedTile>* prioritized_tiles) const {
|
| - LayerIterator end = LayerIterator::End(&render_surface_layer_list_);
|
| - for (LayerIterator it = LayerIterator::Begin(&render_surface_layer_list_);
|
| - it != end; ++it) {
|
| - if (!it.represents_itself())
|
| - continue;
|
| + for (auto it = layer_list_.rbegin(); it != layer_list_.rend(); ++it) {
|
| LayerImpl* layer_impl = *it;
|
| + if (!layer_impl->is_drawn_render_surface_layer_list_member())
|
| + continue;
|
| layer_impl->GetAllPrioritizedTilesForTracing(prioritized_tiles);
|
| }
|
| }
|
| @@ -1543,10 +1540,8 @@ void LayerTreeImpl::AsValueInto(base::trace_event::TracedValue* state) const {
|
| state->SetInteger("source_frame_number", source_frame_number_);
|
|
|
| state->BeginArray("render_surface_layer_list");
|
| - LayerIterator end = LayerIterator::End(&render_surface_layer_list_);
|
| - for (LayerIterator it = LayerIterator::Begin(&render_surface_layer_list_);
|
| - it != end; ++it) {
|
| - if (!it.represents_itself())
|
| + for (auto it = layer_list_.rbegin(); it != layer_list_.rend(); ++it) {
|
| + if (!(*it)->is_drawn_render_surface_layer_list_member())
|
| continue;
|
| TracedValue::AppendIDRef(*it, state);
|
| }
|
|
|