Index: cc/trees/layer_tree_host_impl.cc |
diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc |
index 40cfdfd14a95a54b874725eaefb21aead859bc82..9c8ef290fc488e5b0efff71c84db35300079ea30 100644 |
--- a/cc/trees/layer_tree_host_impl.cc |
+++ b/cc/trees/layer_tree_host_impl.cc |
@@ -37,9 +37,9 @@ |
#include "cc/input/scroll_state.h" |
#include "cc/input/scrollbar_animation_controller.h" |
#include "cc/layers/append_quads_data.h" |
+#include "cc/layers/effect_tree_layer_list_iterator.h" |
#include "cc/layers/heads_up_display_layer_impl.h" |
#include "cc/layers/layer_impl.h" |
-#include "cc/layers/layer_iterator.h" |
#include "cc/layers/painted_scrollbar_layer_impl.h" |
#include "cc/layers/render_surface_impl.h" |
#include "cc/layers/scrollbar_layer_impl_base.h" |
@@ -906,19 +906,16 @@ DrawResult LayerTreeHostImpl::CalculateRenderPasses(FrameData* frame) { |
active_tree()->property_trees()->effect_tree.HasCopyRequests(); |
bool have_missing_animated_tiles = false; |
- LayerIterator end = LayerIterator::End(frame->render_surface_layer_list); |
- for (LayerIterator it = |
- LayerIterator::Begin(frame->render_surface_layer_list); |
- it != end; ++it) { |
- auto target_render_pass_id = |
- it.target_render_surface_layer()->GetRenderSurface()->GetRenderPassId(); |
+ for (EffectTreeLayerListIterator it(active_tree()); |
+ it.state() != EffectTreeLayerListIterator::State::END; ++it) { |
+ auto target_render_pass_id = it.target_render_surface()->GetRenderPassId(); |
RenderPass* target_render_pass = |
FindRenderPassById(frame->render_passes, target_render_pass_id); |
AppendQuadsData append_quads_data; |
- RenderSurfaceImpl* render_surface = it->GetRenderSurface(); |
- if (it.represents_target_render_surface()) { |
+ if (it.state() == EffectTreeLayerListIterator::State::TARGET_SURFACE) { |
+ RenderSurfaceImpl* render_surface = it.target_render_surface(); |
if (render_surface->HasCopyRequest()) { |
active_tree() |
->property_trees() |
@@ -926,49 +923,53 @@ DrawResult LayerTreeHostImpl::CalculateRenderPasses(FrameData* frame) { |
render_surface->EffectTreeIndex(), |
&target_render_pass->copy_requests); |
} |
- } else if (it.represents_contributing_render_surface() && |
- render_surface->contributes_to_drawn_surface()) { |
- render_surface->AppendQuads(target_render_pass, &append_quads_data); |
- } else if (it.represents_itself() && !it->visible_layer_rect().IsEmpty()) { |
+ } else if (it.state() == |
+ EffectTreeLayerListIterator::State::CONTRIBUTING_SURFACE) { |
+ RenderSurfaceImpl* render_surface = it.current_render_surface(); |
+ if (render_surface->contributes_to_drawn_surface()) |
+ render_surface->AppendQuads(target_render_pass, &append_quads_data); |
+ } else if (it.state() == EffectTreeLayerListIterator::State::LAYER && |
+ !it.current_layer()->visible_layer_rect().IsEmpty()) { |
+ LayerImpl* layer = it.current_layer(); |
bool occluded = |
- it->draw_properties().occlusion_in_content_space.IsOccluded( |
- it->visible_layer_rect()); |
- if (!occluded && it->WillDraw(draw_mode, resource_provider_.get())) { |
- DCHECK_EQ(active_tree_.get(), it->layer_tree_impl()); |
+ layer->draw_properties().occlusion_in_content_space.IsOccluded( |
+ layer->visible_layer_rect()); |
+ if (!occluded && layer->WillDraw(draw_mode, resource_provider_.get())) { |
+ DCHECK_EQ(active_tree_.get(), layer->layer_tree_impl()); |
- frame->will_draw_layers.push_back(*it); |
- if (it->may_contain_video()) |
+ frame->will_draw_layers.push_back(layer); |
+ if (layer->may_contain_video()) |
frame->may_contain_video = true; |
- it->AppendQuads(target_render_pass, &append_quads_data); |
+ layer->AppendQuads(target_render_pass, &append_quads_data); |
} |
++layers_drawn; |
- } |
- rendering_stats_instrumentation_->AddVisibleContentArea( |
- append_quads_data.visible_layer_area); |
- rendering_stats_instrumentation_->AddApproximatedVisibleContentArea( |
- append_quads_data.approximated_visible_content_area); |
- rendering_stats_instrumentation_->AddCheckerboardedVisibleContentArea( |
- append_quads_data.checkerboarded_visible_content_area); |
- rendering_stats_instrumentation_->AddCheckerboardedNoRecordingContentArea( |
- append_quads_data.checkerboarded_no_recording_content_area); |
- rendering_stats_instrumentation_->AddCheckerboardedNeedsRasterContentArea( |
- append_quads_data.checkerboarded_needs_raster_content_area); |
- |
- num_missing_tiles += append_quads_data.num_missing_tiles; |
- num_incomplete_tiles += append_quads_data.num_incomplete_tiles; |
- checkerboarded_no_recording_content_area += |
- append_quads_data.checkerboarded_no_recording_content_area; |
- checkerboarded_needs_raster_content_area += |
- append_quads_data.checkerboarded_needs_raster_content_area; |
- if (append_quads_data.num_missing_tiles > 0) { |
- have_missing_animated_tiles |= |
- !it->was_ever_ready_since_last_transform_animation() || |
- it->screen_space_transform_is_animating(); |
- } else { |
- it->set_was_ever_ready_since_last_transform_animation(true); |
+ rendering_stats_instrumentation_->AddVisibleContentArea( |
+ append_quads_data.visible_layer_area); |
+ rendering_stats_instrumentation_->AddApproximatedVisibleContentArea( |
+ append_quads_data.approximated_visible_content_area); |
+ rendering_stats_instrumentation_->AddCheckerboardedVisibleContentArea( |
+ append_quads_data.checkerboarded_visible_content_area); |
+ rendering_stats_instrumentation_->AddCheckerboardedNoRecordingContentArea( |
+ append_quads_data.checkerboarded_no_recording_content_area); |
+ rendering_stats_instrumentation_->AddCheckerboardedNeedsRasterContentArea( |
+ append_quads_data.checkerboarded_needs_raster_content_area); |
+ |
+ num_missing_tiles += append_quads_data.num_missing_tiles; |
+ num_incomplete_tiles += append_quads_data.num_incomplete_tiles; |
+ checkerboarded_no_recording_content_area += |
+ append_quads_data.checkerboarded_no_recording_content_area; |
+ checkerboarded_needs_raster_content_area += |
+ append_quads_data.checkerboarded_needs_raster_content_area; |
+ if (append_quads_data.num_missing_tiles > 0) { |
+ have_missing_animated_tiles |= |
+ !layer->was_ever_ready_since_last_transform_animation() || |
+ layer->screen_space_transform_is_animating(); |
+ } else { |
+ layer->set_was_ever_ready_since_last_transform_animation(true); |
+ } |
} |
} |