diff options
author | danakj@chromium.org <danakj@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-03-10 22:33:08 +0000 |
---|---|---|
committer | danakj@chromium.org <danakj@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-03-10 22:33:08 +0000 |
commit | f636ce801b677854048affa6d550a9ac84c611b0 (patch) | |
tree | 9183d3dc2d897b80a2df18dfe8e5eda47c3f025f /cc/debug | |
parent | 51dacee518ef680a24973a3573c09433c43e83ca (diff) | |
download | chromium_src-f636ce801b677854048affa6d550a9ac84c611b0.zip chromium_src-f636ce801b677854048affa6d550a9ac84c611b0.tar.gz chromium_src-f636ce801b677854048affa6d550a9ac84c611b0.tar.bz2 |
cc: Fix damage when the HUD is enabled.
When the HUD is on, and partial swaps are enabled, the damage rects
emitted by the renderer do not include the HUD, so the HUD is not
updated correctly on screen.
Previously we disabled partial swap in the renderer compositor to
force the hud to display, but in ubercomp, partial swap is never
used in the renderer, and the damage rect is given to the browser
instead. So we need to update the renderer's damage rect in this
case.
R=enne@chromium.org, piman@chromium.org, caseq, enne
BUG=350495
Review URL: https://codereview.chromium.org/191433002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@256052 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'cc/debug')
-rw-r--r-- | cc/debug/debug_rect_history.cc | 8 | ||||
-rw-r--r-- | cc/debug/debug_rect_history.h | 5 |
2 files changed, 8 insertions, 5 deletions
diff --git a/cc/debug/debug_rect_history.cc b/cc/debug/debug_rect_history.cc index 47c952e..e165aed 100644 --- a/cc/debug/debug_rect_history.cc +++ b/cc/debug/debug_rect_history.cc @@ -26,6 +26,7 @@ DebugRectHistory::~DebugRectHistory() {} void DebugRectHistory::SaveDebugRectsForCurrentFrame( LayerImpl* root_layer, + LayerImpl* hud_layer, const LayerImplList& render_surface_layer_list, const std::vector<gfx::Rect>& occluding_screen_space_rects, const std::vector<gfx::Rect>& non_occluding_screen_space_rects, @@ -47,7 +48,7 @@ void DebugRectHistory::SaveDebugRectsForCurrentFrame( SavePaintRects(root_layer); if (debug_state.show_property_changed_rects) - SavePropertyChangedRects(render_surface_layer_list); + SavePropertyChangedRects(render_surface_layer_list, hud_layer); if (debug_state.show_surface_damage_rects) SaveSurfaceDamageRects(render_surface_layer_list); @@ -89,7 +90,8 @@ void DebugRectHistory::SavePaintRects(LayerImpl* layer) { } void DebugRectHistory::SavePropertyChangedRects( - const LayerImplList& render_surface_layer_list) { + const LayerImplList& render_surface_layer_list, + LayerImpl* hud_layer) { for (int surface_index = render_surface_layer_list.size() - 1; surface_index >= 0; --surface_index) { @@ -107,7 +109,7 @@ void DebugRectHistory::SavePropertyChangedRects( layer, render_surface_layer->id())) continue; - if (layer->LayerIsAlwaysDamaged()) + if (layer == hud_layer) continue; if (layer->LayerPropertyChanged()) { diff --git a/cc/debug/debug_rect_history.h b/cc/debug/debug_rect_history.h index 33b74a2..f5ee0be 100644 --- a/cc/debug/debug_rect_history.h +++ b/cc/debug/debug_rect_history.h @@ -77,6 +77,7 @@ class DebugRectHistory { // reset. void SaveDebugRectsForCurrentFrame( LayerImpl* root_layer, + LayerImpl* hud_layer, const LayerImplList& render_surface_layer_list, const std::vector<gfx::Rect>& occluding_screen_space_rects, const std::vector<gfx::Rect>& non_occluding_screen_space_rects, @@ -88,8 +89,8 @@ class DebugRectHistory { DebugRectHistory(); void SavePaintRects(LayerImpl* layer); - void SavePropertyChangedRects( - const LayerImplList& render_surface_layer_list); + void SavePropertyChangedRects(const LayerImplList& render_surface_layer_list, + LayerImpl* hud_layer); void SaveSurfaceDamageRects( const LayerImplList& render_surface_layer_list); void SaveScreenSpaceRects( |