diff options
Diffstat (limited to 'chromium/third_party/blink/renderer/core/paint/cull_rect_updater.cc')
-rw-r--r-- | chromium/third_party/blink/renderer/core/paint/cull_rect_updater.cc | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/chromium/third_party/blink/renderer/core/paint/cull_rect_updater.cc b/chromium/third_party/blink/renderer/core/paint/cull_rect_updater.cc index 661ac3aab73..ae735464f56 100644 --- a/chromium/third_party/blink/renderer/core/paint/cull_rect_updater.cc +++ b/chromium/third_party/blink/renderer/core/paint/cull_rect_updater.cc @@ -21,6 +21,8 @@ namespace blink { namespace { +bool g_is_overriding_cull_rects = false; + void SetLayerNeedsRepaintOnCullRectChange(PaintLayer& layer) { if (layer.PreviousPaintResult() == kMayBeClippedByCullRect || RuntimeEnabledFeatures::PaintUnderInvalidationCheckingEnabled()) { @@ -241,7 +243,10 @@ void CullRectUpdater::UpdateRecursively(const Context& parent_context, UpdateForDescendants(context, layer); } - layer.ClearNeedsCullRectUpdate(); + if (g_is_overriding_cull_rects) + layer.SetNeedsCullRectUpdate(); + else + layer.ClearNeedsCullRectUpdate(); } // "Children" in |force_update_children| means children in the containing block @@ -494,8 +499,7 @@ void CullRectUpdater::PaintPropertiesChanged( } OverriddenCullRectScope::OverriddenCullRectScope(PaintLayer& starting_layer, - const CullRect& cull_rect) - : starting_layer_(starting_layer) { + const CullRect& cull_rect) { if (starting_layer.GetLayoutObject().GetFrame()->IsLocalRoot() && !starting_layer.NeedsCullRectUpdate() && !starting_layer.DescendantNeedsCullRectUpdate() && @@ -505,14 +509,15 @@ OverriddenCullRectScope::OverriddenCullRectScope(PaintLayer& starting_layer, return; } - updated_ = true; + DCHECK(!g_is_overriding_cull_rects); + g_is_overriding_cull_rects = true; + starting_layer.SetNeedsCullRectUpdate(); CullRectUpdater(starting_layer).UpdateInternal(cull_rect); } OverriddenCullRectScope::~OverriddenCullRectScope() { - if (updated_) - starting_layer_.SetNeedsCullRectUpdate(); + g_is_overriding_cull_rects = false; } } // namespace blink |