Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(54)

Side by Side Diff: cc/trees/layer_tree_host_impl.cc

Issue 2254543003: cc: Delete the RendererClient class. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@setvisible-browser
Patch Set: deleterendererclient: rebase Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « cc/trees/layer_tree_host_impl.h ('k') | cc/trees/layer_tree_host_impl_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "cc/trees/layer_tree_host_impl.h" 5 #include "cc/trees/layer_tree_host_impl.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <algorithm> 10 #include <algorithm>
(...skipping 1499 matching lines...) Expand 10 before | Expand all | Expand 10 after
1510 viewport_rect_for_tile_priority_ = 1510 viewport_rect_for_tile_priority_ =
1511 viewport_rect_for_tile_priority_in_view_space; 1511 viewport_rect_for_tile_priority_in_view_space;
1512 1512
1513 if (tile_priority_params_changed) { 1513 if (tile_priority_params_changed) {
1514 active_tree_->set_needs_update_draw_properties(); 1514 active_tree_->set_needs_update_draw_properties();
1515 if (pending_tree_) 1515 if (pending_tree_)
1516 pending_tree_->set_needs_update_draw_properties(); 1516 pending_tree_->set_needs_update_draw_properties();
1517 1517
1518 // Compositor, not OutputSurface, is responsible for setting damage and 1518 // Compositor, not OutputSurface, is responsible for setting damage and
1519 // triggering redraw for constraint changes. 1519 // triggering redraw for constraint changes.
1520 SetFullRootLayerDamage(); 1520 SetFullViewportDamage();
1521 SetNeedsRedraw(); 1521 SetNeedsRedraw();
1522 } 1522 }
1523 } 1523 }
1524 1524
1525 void LayerTreeHostImpl::SetNeedsRedrawRect(const gfx::Rect& damage_rect) { 1525 void LayerTreeHostImpl::SetNeedsRedrawRect(const gfx::Rect& damage_rect) {
1526 if (damage_rect.IsEmpty()) 1526 if (damage_rect.IsEmpty())
1527 return; 1527 return;
1528 NotifySwapPromiseMonitorsOfSetNeedsRedraw(); 1528 NotifySwapPromiseMonitorsOfSetNeedsRedraw();
1529 client_->SetNeedsRedrawRectOnImplThread(damage_rect); 1529 client_->SetNeedsRedrawRectOnImplThread(damage_rect);
1530 } 1530 }
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
1582 external_viewport_ = viewport; 1582 external_viewport_ = viewport;
1583 1583
1584 { 1584 {
1585 base::AutoReset<bool> resourceless_software_draw_reset( 1585 base::AutoReset<bool> resourceless_software_draw_reset(
1586 &resourceless_software_draw_, resourceless_software_draw); 1586 &resourceless_software_draw_, resourceless_software_draw);
1587 1587
1588 // For resourceless software draw, always set full damage to ensure they 1588 // For resourceless software draw, always set full damage to ensure they
1589 // always swap. Otherwise, need to set redraw for any changes to draw 1589 // always swap. Otherwise, need to set redraw for any changes to draw
1590 // parameters. 1590 // parameters.
1591 if (transform_changed || viewport_changed || resourceless_software_draw_) { 1591 if (transform_changed || viewport_changed || resourceless_software_draw_) {
1592 SetFullRootLayerDamage(); 1592 SetFullViewportDamage();
1593 SetNeedsRedraw(); 1593 SetNeedsRedraw();
1594 active_tree_->set_needs_update_draw_properties(); 1594 active_tree_->set_needs_update_draw_properties();
1595 } 1595 }
1596 1596
1597 if (resourceless_software_draw) { 1597 if (resourceless_software_draw) {
1598 client_->OnCanDrawStateChanged(CanDraw()); 1598 client_->OnCanDrawStateChanged(CanDraw());
1599 } 1599 }
1600 1600
1601 client_->OnDrawForOutputSurface(resourceless_software_draw_); 1601 client_->OnDrawForOutputSurface(resourceless_software_draw_);
1602 } 1602 }
1603 1603
1604 if (resourceless_software_draw) { 1604 if (resourceless_software_draw) {
1605 active_tree_->set_needs_update_draw_properties(); 1605 active_tree_->set_needs_update_draw_properties();
1606 client_->OnCanDrawStateChanged(CanDraw()); 1606 client_->OnCanDrawStateChanged(CanDraw());
1607 // This draw may have reset all damage, which would lead to subsequent 1607 // This draw may have reset all damage, which would lead to subsequent
1608 // incorrect hardware draw, so explicitly set damage for next hardware 1608 // incorrect hardware draw, so explicitly set damage for next hardware
1609 // draw as well. 1609 // draw as well.
1610 SetFullRootLayerDamage(); 1610 SetFullViewportDamage();
1611 } 1611 }
1612 } 1612 }
1613 1613
1614 void LayerTreeHostImpl::OnCanDrawStateChangedForTree() { 1614 void LayerTreeHostImpl::OnCanDrawStateChangedForTree() {
1615 client_->OnCanDrawStateChanged(CanDraw()); 1615 client_->OnCanDrawStateChanged(CanDraw());
1616 } 1616 }
1617 1617
1618 CompositorFrameMetadata LayerTreeHostImpl::MakeCompositorFrameMetadata() const { 1618 CompositorFrameMetadata LayerTreeHostImpl::MakeCompositorFrameMetadata() const {
1619 CompositorFrameMetadata metadata; 1619 CompositorFrameMetadata metadata;
1620 metadata.device_scale_factor = active_tree_->painted_device_scale_factor() * 1620 metadata.device_scale_factor = active_tree_->painted_device_scale_factor() *
(...skipping 466 matching lines...) Expand 10 before | Expand all | Expand 10 after
2087 DidVisibilityChange(this, visible_); 2087 DidVisibilityChange(this, visible_);
2088 UpdateTileManagerMemoryPolicy(ActualManagedMemoryPolicy()); 2088 UpdateTileManagerMemoryPolicy(ActualManagedMemoryPolicy());
2089 2089
2090 // If we just became visible, we have to ensure that we draw high res tiles, 2090 // If we just became visible, we have to ensure that we draw high res tiles,
2091 // to prevent checkerboard/low res flashes. 2091 // to prevent checkerboard/low res flashes.
2092 if (visible_) { 2092 if (visible_) {
2093 // TODO(crbug.com/469175): Replace with RequiresHighResToDraw. 2093 // TODO(crbug.com/469175): Replace with RequiresHighResToDraw.
2094 SetRequiresHighResToDraw(); 2094 SetRequiresHighResToDraw();
2095 } else { 2095 } else {
2096 EvictAllUIResources(); 2096 EvictAllUIResources();
2097 // Call PrepareTiles to evict tiles when we become invisible.
2098 PrepareTiles();
2097 } 2099 }
2098 2100
2099 // Call PrepareTiles to evict tiles when we become invisible.
2100 if (!visible)
2101 PrepareTiles();
2102
2103 // Update visibility for the compositor context provider. 2101 // Update visibility for the compositor context provider.
2104 if (output_surface_) { 2102 if (output_surface_) {
2105 UpdateVisibilityForContextProvider(id_, output_surface_->context_provider(), 2103 UpdateVisibilityForContextProvider(id_, output_surface_->context_provider(),
2106 visible); 2104 visible);
2107 } 2105 }
2108 } 2106 }
2109 2107
2110 void LayerTreeHostImpl::SetNeedsOneBeginImplFrame() { 2108 void LayerTreeHostImpl::SetNeedsOneBeginImplFrame() {
2111 // TODO(miletus): This is just the compositor-thread-side call to the 2109 // TODO(miletus): This is just the compositor-thread-side call to the
2112 // SwapPromiseMonitor to say something happened that may cause a swap in the 2110 // SwapPromiseMonitor to say something happened that may cause a swap in the
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
2154 recycle_tree_->RecreateResources(); 2152 recycle_tree_->RecreateResources();
2155 } 2153 }
2156 2154
2157 void LayerTreeHostImpl::CreateAndSetRenderer() { 2155 void LayerTreeHostImpl::CreateAndSetRenderer() {
2158 DCHECK(!renderer_); 2156 DCHECK(!renderer_);
2159 DCHECK(output_surface_); 2157 DCHECK(output_surface_);
2160 DCHECK(resource_provider_); 2158 DCHECK(resource_provider_);
2161 2159
2162 DCHECK(output_surface_->capabilities().delegated_rendering); 2160 DCHECK(output_surface_->capabilities().delegated_rendering);
2163 renderer_ = base::MakeUnique<DelegatingRenderer>( 2161 renderer_ = base::MakeUnique<DelegatingRenderer>(
2164 this, &settings_.renderer_settings, output_surface_, 2162 &settings_.renderer_settings, output_surface_, resource_provider_.get());
2165 resource_provider_.get());
2166 renderer_->SetVisible(visible_); 2163 renderer_->SetVisible(visible_);
2167 SetFullRootLayerDamage(); 2164 SetFullViewportDamage();
2168 2165
2169 // See note in LayerTreeImpl::UpdateDrawProperties. Renderer needs to be 2166 // See note in LayerTreeImpl::UpdateDrawProperties. Renderer needs to be
2170 // initialized to get max texture size. Also, after releasing resources, 2167 // initialized to get max texture size. Also, after releasing resources,
2171 // trees need another update to generate new ones. 2168 // trees need another update to generate new ones.
2172 active_tree_->set_needs_update_draw_properties(); 2169 active_tree_->set_needs_update_draw_properties();
2173 if (pending_tree_) 2170 if (pending_tree_)
2174 pending_tree_->set_needs_update_draw_properties(); 2171 pending_tree_->set_needs_update_draw_properties();
2175 client_->UpdateRendererCapabilitiesOnImplThread(); 2172 client_->UpdateRendererCapabilitiesOnImplThread();
2176 } 2173 }
2177 2174
(...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after
2405 device_viewport_size.width(), "height", 2402 device_viewport_size.width(), "height",
2406 device_viewport_size.height()); 2403 device_viewport_size.height());
2407 2404
2408 if (pending_tree_) 2405 if (pending_tree_)
2409 active_tree_->SetViewportSizeInvalid(); 2406 active_tree_->SetViewportSizeInvalid();
2410 2407
2411 device_viewport_size_ = device_viewport_size; 2408 device_viewport_size_ = device_viewport_size;
2412 2409
2413 UpdateViewportContainerSizes(); 2410 UpdateViewportContainerSizes();
2414 client_->OnCanDrawStateChanged(CanDraw()); 2411 client_->OnCanDrawStateChanged(CanDraw());
2415 SetFullRootLayerDamage(); 2412 SetFullViewportDamage();
2416 active_tree_->set_needs_update_draw_properties(); 2413 active_tree_->set_needs_update_draw_properties();
2417 } 2414 }
2418 2415
2419 const gfx::Rect LayerTreeHostImpl::ViewportRectForTilePriority() const { 2416 const gfx::Rect LayerTreeHostImpl::ViewportRectForTilePriority() const {
2420 if (viewport_rect_for_tile_priority_.IsEmpty()) 2417 if (viewport_rect_for_tile_priority_.IsEmpty())
2421 return DeviceViewport(); 2418 return DeviceViewport();
2422 2419
2423 return viewport_rect_for_tile_priority_; 2420 return viewport_rect_for_tile_priority_;
2424 } 2421 }
2425 2422
(...skipping 10 matching lines...) Expand all
2436 2433
2437 const gfx::Transform& LayerTreeHostImpl::DrawTransform() const { 2434 const gfx::Transform& LayerTreeHostImpl::DrawTransform() const {
2438 return external_transform_; 2435 return external_transform_;
2439 } 2436 }
2440 2437
2441 void LayerTreeHostImpl::DidChangeTopControlsPosition() { 2438 void LayerTreeHostImpl::DidChangeTopControlsPosition() {
2442 UpdateViewportContainerSizes(); 2439 UpdateViewportContainerSizes();
2443 SetNeedsRedraw(); 2440 SetNeedsRedraw();
2444 SetNeedsOneBeginImplFrame(); 2441 SetNeedsOneBeginImplFrame();
2445 active_tree_->set_needs_update_draw_properties(); 2442 active_tree_->set_needs_update_draw_properties();
2446 SetFullRootLayerDamage(); 2443 SetFullViewportDamage();
2447 } 2444 }
2448 2445
2449 float LayerTreeHostImpl::TopControlsHeight() const { 2446 float LayerTreeHostImpl::TopControlsHeight() const {
2450 return active_tree_->top_controls_height(); 2447 return active_tree_->top_controls_height();
2451 } 2448 }
2452 2449
2453 void LayerTreeHostImpl::SetCurrentTopControlsShownRatio(float ratio) { 2450 void LayerTreeHostImpl::SetCurrentTopControlsShownRatio(float ratio) {
2454 if (active_tree_->SetCurrentTopControlsShownRatio(ratio)) 2451 if (active_tree_->SetCurrentTopControlsShownRatio(ratio))
2455 DidChangeTopControlsPosition(); 2452 DidChangeTopControlsPosition();
2456 } 2453 }
(...skipping 753 matching lines...) Expand 10 before | Expand all | Expand 10 after
3210 void LayerTreeHostImpl::SetSynchronousInputHandlerRootScrollOffset( 3207 void LayerTreeHostImpl::SetSynchronousInputHandlerRootScrollOffset(
3211 const gfx::ScrollOffset& root_offset) { 3208 const gfx::ScrollOffset& root_offset) {
3212 bool changed = active_tree_->DistributeRootScrollOffset(root_offset); 3209 bool changed = active_tree_->DistributeRootScrollOffset(root_offset);
3213 if (!changed) 3210 if (!changed)
3214 return; 3211 return;
3215 3212
3216 client_->SetNeedsCommitOnImplThread(); 3213 client_->SetNeedsCommitOnImplThread();
3217 // After applying the synchronous input handler's scroll offset, tell it what 3214 // After applying the synchronous input handler's scroll offset, tell it what
3218 // we ended up with. 3215 // we ended up with.
3219 UpdateRootLayerStateForSynchronousInputHandler(); 3216 UpdateRootLayerStateForSynchronousInputHandler();
3220 SetFullRootLayerDamage(); 3217 SetFullViewportDamage();
3221 SetNeedsRedraw(); 3218 SetNeedsRedraw();
3222 } 3219 }
3223 3220
3224 void LayerTreeHostImpl::ClearCurrentlyScrollingLayer() { 3221 void LayerTreeHostImpl::ClearCurrentlyScrollingLayer() {
3225 active_tree_->ClearCurrentlyScrollingLayer(); 3222 active_tree_->ClearCurrentlyScrollingLayer();
3226 did_lock_scrolling_layer_ = false; 3223 did_lock_scrolling_layer_ = false;
3227 scroll_affects_scroll_handler_ = false; 3224 scroll_affects_scroll_handler_ = false;
3228 accumulated_root_overscroll_ = gfx::Vector2dF(); 3225 accumulated_root_overscroll_ = gfx::Vector2dF();
3229 } 3226 }
3230 3227
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after
3396 active_tree_->page_scale_factor()->PullDeltaForMainThread(); 3393 active_tree_->page_scale_factor()->PullDeltaForMainThread();
3397 scroll_info->top_controls_delta = 3394 scroll_info->top_controls_delta =
3398 active_tree()->top_controls_shown_ratio()->PullDeltaForMainThread(); 3395 active_tree()->top_controls_shown_ratio()->PullDeltaForMainThread();
3399 scroll_info->elastic_overscroll_delta = 3396 scroll_info->elastic_overscroll_delta =
3400 active_tree_->elastic_overscroll()->PullDeltaForMainThread(); 3397 active_tree_->elastic_overscroll()->PullDeltaForMainThread();
3401 scroll_info->swap_promises.swap(swap_promises_for_main_thread_scroll_update_); 3398 scroll_info->swap_promises.swap(swap_promises_for_main_thread_scroll_update_);
3402 3399
3403 return scroll_info; 3400 return scroll_info;
3404 } 3401 }
3405 3402
3406 void LayerTreeHostImpl::SetFullRootLayerDamage() { 3403 void LayerTreeHostImpl::SetFullViewportDamage() {
3407 SetViewportDamage(gfx::Rect(DrawViewportSize())); 3404 SetViewportDamage(gfx::Rect(DrawViewportSize()));
3408 } 3405 }
3409 3406
3410 void LayerTreeHostImpl::ScrollViewportInnerFirst(gfx::Vector2dF scroll_delta) { 3407 void LayerTreeHostImpl::ScrollViewportInnerFirst(gfx::Vector2dF scroll_delta) {
3411 DCHECK(InnerViewportScrollLayer()); 3408 DCHECK(InnerViewportScrollLayer());
3412 LayerImpl* scroll_layer = InnerViewportScrollLayer(); 3409 LayerImpl* scroll_layer = InnerViewportScrollLayer();
3413 3410
3414 gfx::Vector2dF unused_delta = scroll_layer->ScrollBy(scroll_delta); 3411 gfx::Vector2dF unused_delta = scroll_layer->ScrollBy(scroll_delta);
3415 if (!unused_delta.IsZero() && OuterViewportScrollLayer()) 3412 if (!unused_delta.IsZero() && OuterViewportScrollLayer())
3416 OuterViewportScrollLayer()->ScrollBy(unused_delta); 3413 OuterViewportScrollLayer()->ScrollBy(unused_delta);
(...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after
3685 state->EndDictionary(); 3682 state->EndDictionary();
3686 } 3683 }
3687 3684
3688 void LayerTreeHostImpl::SetDebugState( 3685 void LayerTreeHostImpl::SetDebugState(
3689 const LayerTreeDebugState& new_debug_state) { 3686 const LayerTreeDebugState& new_debug_state) {
3690 if (LayerTreeDebugState::Equal(debug_state_, new_debug_state)) 3687 if (LayerTreeDebugState::Equal(debug_state_, new_debug_state))
3691 return; 3688 return;
3692 3689
3693 debug_state_ = new_debug_state; 3690 debug_state_ = new_debug_state;
3694 UpdateTileManagerMemoryPolicy(ActualManagedMemoryPolicy()); 3691 UpdateTileManagerMemoryPolicy(ActualManagedMemoryPolicy());
3695 SetFullRootLayerDamage(); 3692 SetFullViewportDamage();
3696 } 3693 }
3697 3694
3698 void LayerTreeHostImpl::CreateUIResource(UIResourceId uid, 3695 void LayerTreeHostImpl::CreateUIResource(UIResourceId uid,
3699 const UIResourceBitmap& bitmap) { 3696 const UIResourceBitmap& bitmap) {
3700 DCHECK_GT(uid, 0); 3697 DCHECK_GT(uid, 0);
3701 3698
3702 // Allow for multiple creation requests with the same UIResourceId. The 3699 // Allow for multiple creation requests with the same UIResourceId. The
3703 // previous resource is simply deleted. 3700 // previous resource is simply deleted.
3704 ResourceId id = ResourceIdForUIResource(uid); 3701 ResourceId id = ResourceIdForUIResource(uid);
3705 if (id) 3702 if (id)
(...skipping 360 matching lines...) Expand 10 before | Expand all | Expand 10 after
4066 return task_runner_provider_->HasImplThread(); 4063 return task_runner_provider_->HasImplThread();
4067 } 4064 }
4068 4065
4069 bool LayerTreeHostImpl::CommitToActiveTree() const { 4066 bool LayerTreeHostImpl::CommitToActiveTree() const {
4070 // In single threaded mode we skip the pending tree and commit directly to the 4067 // In single threaded mode we skip the pending tree and commit directly to the
4071 // active tree. 4068 // active tree.
4072 return !task_runner_provider_->HasImplThread(); 4069 return !task_runner_provider_->HasImplThread();
4073 } 4070 }
4074 4071
4075 } // namespace cc 4072 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/layer_tree_host_impl.h ('k') | cc/trees/layer_tree_host_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698