| 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 f558733c589de32d5ec3e280cf9f4788a7189439..f2cabde35d76da331d9b81b5f824803a2627cd1e 100644
|
| --- a/cc/trees/layer_tree_host_impl.cc
|
| +++ b/cc/trees/layer_tree_host_impl.cc
|
| @@ -398,9 +398,9 @@ bool LayerTreeHostImpl::CanDraw() const {
|
| // Must have an OutputSurface if |renderer_| is not NULL.
|
| DCHECK(output_surface_);
|
|
|
| - // TODO(boliu): Make draws without root_layer work and move this below
|
| + // TODO(boliu): Make draws without layers work and move this below
|
| // |resourceless_software_draw_| check. Tracked in crbug.com/264967.
|
| - if (!active_tree_->root_layer()) {
|
| + if (active_tree_->LayerListIsEmpty()) {
|
| TRACE_EVENT_INSTANT0("cc", "LayerTreeHostImpl::CanDraw no root layer",
|
| TRACE_EVENT_SCOPE_THREAD);
|
| return false;
|
| @@ -632,7 +632,6 @@ void LayerTreeHostImpl::QueueSwapPromiseForMainThreadScrollUpdate(
|
| }
|
|
|
| void LayerTreeHostImpl::TrackDamageForAllSurfaces(
|
| - LayerImpl* root_draw_layer,
|
| const LayerImplList& render_surface_layer_list) {
|
| // For now, we use damage tracking to compute a global scissor. To do this, we
|
| // must compute all damage tracking before drawing anything, so that we know
|
| @@ -730,10 +729,10 @@ static void AppendQuadsForRenderSurfaceLayer(
|
|
|
| static void AppendQuadsToFillScreen(const gfx::Rect& root_scroll_layer_rect,
|
| RenderPass* target_render_pass,
|
| - LayerImpl* root_layer,
|
| + RenderSurfaceImpl* root_render_surface,
|
| SkColor screen_background_color,
|
| const Region& fill_region) {
|
| - if (!root_layer || !SkColorGetA(screen_background_color))
|
| + if (!root_render_surface || !SkColorGetA(screen_background_color))
|
| return;
|
| if (fill_region.IsEmpty())
|
| return;
|
| @@ -743,7 +742,7 @@ static void AppendQuadsToFillScreen(const gfx::Rect& root_scroll_layer_rect,
|
| // TODO(danakj): Make the gutter quads generated by the solid color layer
|
| // (make it smarter about generating quads to fill unoccluded areas).
|
|
|
| - gfx::Rect root_target_rect = root_layer->render_surface()->content_rect();
|
| + gfx::Rect root_target_rect = root_render_surface->content_rect();
|
| float opacity = 1.f;
|
| int sorting_context_id = 0;
|
| SharedQuadState* shared_quad_state =
|
| @@ -785,15 +784,13 @@ DrawResult LayerTreeHostImpl::CalculateRenderPasses(
|
| FrameData* frame) {
|
| DCHECK(frame->render_passes.empty());
|
| DCHECK(CanDraw());
|
| - DCHECK(active_tree_->root_layer());
|
| + DCHECK(!active_tree_->LayerListIsEmpty());
|
|
|
| - TrackDamageForAllSurfaces(active_tree_->root_layer(),
|
| - *frame->render_surface_layer_list);
|
| + TrackDamageForAllSurfaces(*frame->render_surface_layer_list);
|
|
|
| // If the root render surface has no visible damage, then don't generate a
|
| // frame at all.
|
| - RenderSurfaceImpl* root_surface =
|
| - active_tree_->root_layer()->render_surface();
|
| + RenderSurfaceImpl* root_surface = active_tree_->RootRenderSurface();
|
| bool root_surface_has_no_visible_damage =
|
| !root_surface->damage_tracker()->current_damage_rect().Intersects(
|
| root_surface->content_rect());
|
| @@ -986,7 +983,7 @@ DrawResult LayerTreeHostImpl::CalculateRenderPasses(
|
| frame->render_passes.back()->has_transparent_background = false;
|
| AppendQuadsToFillScreen(
|
| active_tree_->RootScrollLayerDeviceViewportBounds(),
|
| - frame->render_passes.back().get(), active_tree_->root_layer(),
|
| + frame->render_passes.back().get(), active_tree_->RootRenderSurface(),
|
| active_tree_->background_color(), unoccluded_screen_space_region);
|
| }
|
|
|
| @@ -1107,12 +1104,12 @@ DrawResult LayerTreeHostImpl::PrepareToDraw(FrameData* frame) {
|
| frame->will_draw_layers.clear();
|
| frame->has_no_damage = false;
|
|
|
| - if (active_tree_->root_layer()) {
|
| + if (active_tree_->RootRenderSurface()) {
|
| gfx::Rect device_viewport_damage_rect = viewport_damage_rect_;
|
| viewport_damage_rect_ = gfx::Rect();
|
|
|
| - active_tree_->root_layer()->render_surface()->damage_tracker()->
|
| - AddDamageNextUpdate(device_viewport_damage_rect);
|
| + active_tree_->RootRenderSurface()->damage_tracker()->AddDamageNextUpdate(
|
| + device_viewport_damage_rect);
|
| }
|
|
|
| DrawResult draw_result = CalculateRenderPasses(frame);
|
| @@ -1646,10 +1643,8 @@ void LayerTreeHostImpl::DrawLayers(FrameData* frame) {
|
|
|
| if (debug_state_.ShowHudRects()) {
|
| debug_rect_history_->SaveDebugRectsForCurrentFrame(
|
| - active_tree_->root_layer(),
|
| - active_tree_->hud_layer(),
|
| - *frame->render_surface_layer_list,
|
| - debug_state_);
|
| + active_tree(), active_tree_->hud_layer(),
|
| + *frame->render_surface_layer_list, debug_state_);
|
| }
|
|
|
| bool is_new_trace;
|
| @@ -1942,10 +1937,6 @@ bool LayerTreeHostImpl::HaveRootScrollLayer() const {
|
| return !!InnerViewportScrollLayer();
|
| }
|
|
|
| -LayerImpl* LayerTreeHostImpl::RootLayer() const {
|
| - return active_tree_->root_layer();
|
| -}
|
| -
|
| LayerImpl* LayerTreeHostImpl::InnerViewportScrollLayer() const {
|
| return active_tree_->InnerViewportScrollLayer();
|
| }
|
| @@ -2000,7 +1991,7 @@ void LayerTreeHostImpl::ActivateSyncTree() {
|
| pending_tree_->ProcessUIResourceRequestQueue();
|
|
|
| if (pending_tree_->needs_full_tree_sync()) {
|
| - TreeSynchronizer::SynchronizeTrees(pending_tree_->root_layer(),
|
| + TreeSynchronizer::SynchronizeTrees(pending_tree_.get(),
|
| active_tree_.get());
|
| }
|
|
|
| @@ -2020,7 +2011,7 @@ void LayerTreeHostImpl::ActivateSyncTree() {
|
|
|
| TreeSynchronizer::PushLayerProperties(pending_tree(), active_tree());
|
| pending_tree_->PushPropertiesTo(active_tree_.get());
|
| - if (pending_tree_->root_layer())
|
| + if (!pending_tree_->LayerListIsEmpty())
|
| pending_tree_->property_trees()->ResetAllChangeTracking();
|
|
|
| // Now that we've synced everything from the pending tree to the active
|
| @@ -3368,19 +3359,18 @@ LayerTreeHostImpl::ProcessLayerTreeMutations() {
|
| }
|
|
|
| static void CollectScrollDeltas(ScrollAndScaleSet* scroll_info,
|
| - LayerImpl* root_layer) {
|
| - if (!root_layer)
|
| + LayerTreeImpl* tree_impl) {
|
| + if (tree_impl->LayerListIsEmpty())
|
| return;
|
|
|
| - return root_layer->layer_tree_impl()
|
| - ->property_trees()
|
| - ->scroll_tree.CollectScrollDeltas(scroll_info);
|
| + return tree_impl->property_trees()->scroll_tree.CollectScrollDeltas(
|
| + scroll_info);
|
| }
|
|
|
| std::unique_ptr<ScrollAndScaleSet> LayerTreeHostImpl::ProcessScrollDeltas() {
|
| std::unique_ptr<ScrollAndScaleSet> scroll_info(new ScrollAndScaleSet());
|
|
|
| - CollectScrollDeltas(scroll_info.get(), active_tree_->root_layer());
|
| + CollectScrollDeltas(scroll_info.get(), active_tree_.get());
|
| scroll_info->page_scale_delta =
|
| active_tree_->page_scale_factor()->PullDeltaForMainThread();
|
| scroll_info->top_controls_delta =
|
|
|