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 5d38bf58c59e6a0558d27ff10c0c3f58740612b4..4c90e15f7b270ed6b2a390952e646d9818e36b1d 100644 |
--- a/cc/trees/layer_tree_host_impl.cc |
+++ b/cc/trees/layer_tree_host_impl.cc |
@@ -163,7 +163,7 @@ DEFINE_SCOPED_UMA_HISTOGRAM_TIMER(PendingTreeDurationHistogramTimer, |
"Scheduling.%s.PendingTreeDuration"); |
LayerTreeHostImpl::FrameData::FrameData() |
- : render_surface_layer_list(nullptr), |
+ : render_surface_list(nullptr), |
has_no_damage(false), |
may_contain_video(false) {} |
@@ -780,7 +780,7 @@ DrawResult LayerTreeHostImpl::CalculateRenderPasses(FrameData* frame) { |
// the root damage rect. The root damage rect is then used to scissor each |
// surface. |
DamageTracker::UpdateDamageTracking(active_tree_.get(), |
- active_tree_->RenderSurfaceLayerList()); |
+ active_tree_->GetRenderSurfaceList()); |
// If the root render surface has no visible damage, then don't generate a |
// frame at all. |
@@ -788,7 +788,7 @@ DrawResult LayerTreeHostImpl::CalculateRenderPasses(FrameData* frame) { |
bool root_surface_has_no_visible_damage = |
!root_surface->GetDamageRect().Intersects(root_surface->content_rect()); |
bool root_surface_has_contributing_layers = |
- !root_surface->layer_list().empty(); |
+ !!root_surface->num_contributors(); |
bool hud_wants_to_draw_ = active_tree_->hud_layer() && |
active_tree_->hud_layer()->IsAnimatingHUDContents(); |
bool must_always_swap = |
@@ -811,25 +811,22 @@ DrawResult LayerTreeHostImpl::CalculateRenderPasses(FrameData* frame) { |
return DRAW_SUCCESS; |
} |
- TRACE_EVENT_BEGIN2( |
- "cc", "LayerTreeHostImpl::CalculateRenderPasses", |
- "render_surface_layer_list.size()", |
- static_cast<uint64_t>(frame->render_surface_layer_list->size()), |
- "RequiresHighResToDraw", RequiresHighResToDraw()); |
+ TRACE_EVENT_BEGIN2("cc", "LayerTreeHostImpl::CalculateRenderPasses", |
+ "render_surface_list.size()", |
+ static_cast<uint64_t>(frame->render_surface_list->size()), |
+ "RequiresHighResToDraw", RequiresHighResToDraw()); |
// Create the render passes in dependency order. |
- size_t render_surface_layer_list_size = |
- frame->render_surface_layer_list->size(); |
- for (size_t i = 0; i < render_surface_layer_list_size; ++i) { |
- size_t surface_index = render_surface_layer_list_size - 1 - i; |
- LayerImpl* render_surface_layer = |
- (*frame->render_surface_layer_list)[surface_index]; |
+ size_t render_surface_list_size = frame->render_surface_list->size(); |
+ for (size_t i = 0; i < render_surface_list_size; ++i) { |
+ size_t surface_index = render_surface_list_size - 1 - i; |
RenderSurfaceImpl* render_surface = |
- render_surface_layer->GetRenderSurface(); |
+ (*frame->render_surface_list)[surface_index]; |
+ bool is_root_surface = |
+ render_surface->EffectTreeIndex() == EffectTree::kContentsRootNodeId; |
bool should_draw_into_render_pass = |
- active_tree_->IsRootLayer(render_surface_layer) || |
- render_surface->contributes_to_drawn_surface() || |
+ is_root_surface || render_surface->contributes_to_drawn_surface() || |
render_surface->HasCopyRequest(); |
if (should_draw_into_render_pass) |
frame->render_passes.push_back(render_surface->CreateRenderPass()); |
@@ -1113,7 +1110,7 @@ DrawResult LayerTreeHostImpl::PrepareToDraw(FrameData* frame) { |
// they appear as part of the current frame being drawn. |
tile_manager_.Flush(); |
- frame->render_surface_layer_list = &active_tree_->RenderSurfaceLayerList(); |
+ frame->render_surface_list = &active_tree_->GetRenderSurfaceList(); |
frame->render_passes.clear(); |
frame->will_draw_layers.clear(); |
frame->has_no_damage = false; |
@@ -1659,8 +1656,8 @@ bool LayerTreeHostImpl::DrawLayers(FrameData* frame) { |
if (debug_state_.ShowHudRects()) { |
debug_rect_history_->SaveDebugRectsForCurrentFrame( |
- active_tree(), active_tree_->hud_layer(), |
- *frame->render_surface_layer_list, debug_state_); |
+ active_tree(), active_tree_->hud_layer(), *frame->render_surface_list, |
+ debug_state_); |
} |
bool is_new_trace; |
@@ -1744,8 +1741,8 @@ bool LayerTreeHostImpl::DrawLayers(FrameData* frame) { |
// are noted as they occur. |
// TODO(boliu): If we did a temporary software renderer frame, propogate the |
// damage forward to the next frame. |
- for (size_t i = 0; i < frame->render_surface_layer_list->size(); i++) { |
- auto* surface = (*frame->render_surface_layer_list)[i]->GetRenderSurface(); |
+ for (size_t i = 0; i < frame->render_surface_list->size(); i++) { |
+ auto* surface = (*frame->render_surface_list)[i]; |
surface->damage_tracker()->DidDrawDamagedArea(); |
} |
active_tree_->ResetAllChangeTracking(); |