Index: cc/output/overlay_strategy_single_on_top.cc |
diff --git a/cc/output/overlay_strategy_single_on_top.cc b/cc/output/overlay_strategy_single_on_top.cc |
index 71897ed4596cc1f72bc370bba044136649ff0fe3..566ae1323c42b32e2e34aae68531bfee12167fce 100644 |
--- a/cc/output/overlay_strategy_single_on_top.cc |
+++ b/cc/output/overlay_strategy_single_on_top.cc |
@@ -187,6 +187,14 @@ bool OverlayStrategySingleOnTop::Attempt( |
// If the candidate can be handled by an overlay, create a pass for it. |
if (candidates[1].overlay_handled) { |
quad_list.EraseAndInvalidateAllPointers(candidate_iterator); |
+ root_render_pass->overlay_rect = gfx::Rect(); |
+ for (const auto* quad : root_render_pass->quad_list) { |
+ if (quad->damaged) { |
+ gfx::RectF rect = gfx::RectF(quad->visible_rect); |
+ quad->quadTransform().TransformRect(&rect); |
+ root_render_pass->overlay_rect.Union(gfx::ToEnclosingRect(rect)); |
+ } |
+ } |
candidate_list->swap(candidates); |
return true; |
} |