Title: [175352] trunk/Source/WebCore
Revision
175352
Author
[email protected]
Date
2014-10-29 16:02:10 -0700 (Wed, 29 Oct 2014)

Log Message

Generalize dirtying of parent's line boxes when taking a renderer out of tree.
<https://webkit.org/b/138152>

Reviewed by Antti Koivisto.

Instead of calling dirtyLinesFromChangedChild() when certain types of renderers
are about to be destroyed, always do this in RenderElement::willBeRemovedFromTree().

This is part of an effort to make render tree teardown less incomprehensible.

We still don't bother at all if we're in the process of tearing down the entire
render tree, since that would be a waste of time.

* rendering/RenderBlock.cpp:
(WebCore::RenderBlock::willBeDestroyed):
* rendering/RenderBlockFlow.cpp:
(WebCore::RenderBlockFlow::willBeDestroyed):
* rendering/RenderElement.cpp:
(WebCore::RenderElement::willBeRemovedFromTree):
* rendering/RenderInline.cpp:
(WebCore::RenderInline::willBeDestroyed):
* rendering/RenderReplaced.cpp:
(WebCore::RenderReplaced::willBeDestroyed): Deleted.
* rendering/RenderReplaced.h:

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (175351 => 175352)


--- trunk/Source/WebCore/ChangeLog	2014-10-29 22:59:15 UTC (rev 175351)
+++ trunk/Source/WebCore/ChangeLog	2014-10-29 23:02:10 UTC (rev 175352)
@@ -1,3 +1,30 @@
+2014-10-29  Andreas Kling  <[email protected]>
+
+        Generalize dirtying of parent's line boxes when taking a renderer out of tree.
+        <https://webkit.org/b/138152>
+
+        Reviewed by Antti Koivisto.
+
+        Instead of calling dirtyLinesFromChangedChild() when certain types of renderers
+        are about to be destroyed, always do this in RenderElement::willBeRemovedFromTree().
+
+        This is part of an effort to make render tree teardown less incomprehensible.
+
+        We still don't bother at all if we're in the process of tearing down the entire
+        render tree, since that would be a waste of time.
+
+        * rendering/RenderBlock.cpp:
+        (WebCore::RenderBlock::willBeDestroyed):
+        * rendering/RenderBlockFlow.cpp:
+        (WebCore::RenderBlockFlow::willBeDestroyed):
+        * rendering/RenderElement.cpp:
+        (WebCore::RenderElement::willBeRemovedFromTree):
+        * rendering/RenderInline.cpp:
+        (WebCore::RenderInline::willBeDestroyed):
+        * rendering/RenderReplaced.cpp:
+        (WebCore::RenderReplaced::willBeDestroyed): Deleted.
+        * rendering/RenderReplaced.h:
+
 2014-10-28  Ada Chan  <[email protected]>
 
         Implement WKPageSetMuted(bool).

Modified: trunk/Source/WebCore/rendering/RenderBlock.cpp (175351 => 175352)


--- trunk/Source/WebCore/rendering/RenderBlock.cpp	2014-10-29 22:59:15 UTC (rev 175351)
+++ trunk/Source/WebCore/rendering/RenderBlock.cpp	2014-10-29 23:02:10 UTC (rev 175352)
@@ -242,11 +242,6 @@
     // properly dirty line boxes that they are removed from. Effects that do :before/:after only on hover could crash otherwise.
     destroyLeftoverChildren();
 
-    if (!documentBeingDestroyed()) {
-        if (parent())
-            parent()->dirtyLinesFromChangedChild(*this);
-    }
-
     removeFromUpdateScrollInfoAfterLayoutTransaction();
 
     RenderBox::willBeDestroyed();

Modified: trunk/Source/WebCore/rendering/RenderBlockFlow.cpp (175351 => 175352)


--- trunk/Source/WebCore/rendering/RenderBlockFlow.cpp	2014-10-29 22:59:15 UTC (rev 175351)
+++ trunk/Source/WebCore/rendering/RenderBlockFlow.cpp	2014-10-29 23:02:10 UTC (rev 175352)
@@ -166,8 +166,7 @@
                         childBox->removeFromParent();
                 }
             }
-        } else if (parent())
-            parent()->dirtyLinesFromChangedChild(*this);
+        }
     }
 
     m_lineBoxes.deleteLineBoxes();

Modified: trunk/Source/WebCore/rendering/RenderElement.cpp (175351 => 175352)


--- trunk/Source/WebCore/rendering/RenderElement.cpp	2014-10-29 22:59:15 UTC (rev 175351)
+++ trunk/Source/WebCore/rendering/RenderElement.cpp	2014-10-29 23:02:10 UTC (rev 175352)
@@ -1041,7 +1041,7 @@
     if (m_style->hasFixedBackgroundImage() && !frame().settings().fixedBackgroundsPaintRelativeToDocument())
         view().frameView().removeSlowRepaintObject(this);
 
-    if (isOutOfFlowPositioned() && parent()->childrenInline())
+    if (!documentBeingDestroyed())
         parent()->dirtyLinesFromChangedChild(*this);
 
     if (auto* containerFlowThread = parent()->renderNamedFlowThreadWrapper())

Modified: trunk/Source/WebCore/rendering/RenderInline.cpp (175351 => 175352)


--- trunk/Source/WebCore/rendering/RenderInline.cpp	2014-10-29 22:59:15 UTC (rev 175351)
+++ trunk/Source/WebCore/rendering/RenderInline.cpp	2014-10-29 23:02:10 UTC (rev 175352)
@@ -98,8 +98,7 @@
                 for (auto box = firstLineBox(); box; box = box->nextLineBox())
                     box->removeFromParent();
             }
-        } else if (parent()) 
-            parent()->dirtyLinesFromChangedChild(*this);
+        }
     }
 
     m_lineBoxes.deleteLineBoxes();

Modified: trunk/Source/WebCore/rendering/RenderReplaced.cpp (175351 => 175352)


--- trunk/Source/WebCore/rendering/RenderReplaced.cpp	2014-10-29 22:59:15 UTC (rev 175351)
+++ trunk/Source/WebCore/rendering/RenderReplaced.cpp	2014-10-29 23:02:10 UTC (rev 175352)
@@ -71,14 +71,6 @@
 {
 }
 
-void RenderReplaced::willBeDestroyed()
-{
-    if (!documentBeingDestroyed() && parent())
-        parent()->dirtyLinesFromChangedChild(*this);
-
-    RenderBox::willBeDestroyed();
-}
-
 void RenderReplaced::styleDidChange(StyleDifference diff, const RenderStyle* oldStyle)
 {
     RenderBox::styleDidChange(diff, oldStyle);

Modified: trunk/Source/WebCore/rendering/RenderReplaced.h (175351 => 175352)


--- trunk/Source/WebCore/rendering/RenderReplaced.h	2014-10-29 22:59:15 UTC (rev 175351)
+++ trunk/Source/WebCore/rendering/RenderReplaced.h	2014-10-29 23:02:10 UTC (rev 175352)
@@ -43,8 +43,6 @@
     RenderReplaced(Element&, PassRef<RenderStyle>, const LayoutSize& intrinsicSize);
     RenderReplaced(Document&, PassRef<RenderStyle>, const LayoutSize& intrinsicSize);
 
-    virtual void willBeDestroyed() override;
-
     virtual void layout() override;
 
     virtual LayoutSize intrinsicSize() const override final { return m_intrinsicSize; }
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to