Bug 1460526 - Don't attempt to do a partial rebuild when a sublist DAG gets too complex, always rebuild the whole display list. r?miko draft
authorMatt Woodrow <mwoodrow@mozilla.com>
Tue, 15 May 2018 14:21:05 +1200
changeset 795133 88507e387e4a141bd4584debd21b8a5de7716568
parent 795132 cf1d718798f429fc4b7b439dc872b2dba384d223
child 795135 fb01e3bb764662c9da522d519f2ef8dceb1fd200
push id109866
push usermwoodrow@mozilla.com
push dateTue, 15 May 2018 02:26:33 +0000
reviewersmiko
bugs1460526
milestone62.0a1
Bug 1460526 - Don't attempt to do a partial rebuild when a sublist DAG gets too complex, always rebuild the whole display list. r?miko MozReview-Commit-ID: 5u3sBSepgJa
layout/painting/RetainedDisplayListBuilder.cpp
--- a/layout/painting/RetainedDisplayListBuilder.cpp
+++ b/layout/painting/RetainedDisplayListBuilder.cpp
@@ -144,18 +144,17 @@ RetainedDisplayListBuilder::PreProcessDi
         aList->mDAG.AddNode(Span<const MergedListIndex>(&previous, 1));
       }
     }
 
     nsIFrame* f = item->Frame();
 
     if (item->GetChildren()) {
       if (!PreProcessDisplayList(item->GetChildren(), SelectAGRForFrame(f, aAGR))) {
-        mBuilder.MarkFrameForDisplayIfVisible(f, mBuilder.RootReferenceFrame());
-        mBuilder.MarkFrameModifiedDuringBuilding(f);
+        return false;
       }
     }
 
     // TODO: We should be able to check the clipped bounds relative
     // to the common AGR (of both the existing item and the invalidated
     // frame) and determine if they can ever intersect.
     if (aAGR && item->GetAnimatedGeometryRoot()->GetAsyncAGR() != aAGR) {
       mBuilder.MarkFrameForDisplayIfVisible(f, mBuilder.RootReferenceFrame());