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, a=RyanVM
authorMatt Woodrow <mwoodrow@mozilla.com>
Tue, 15 May 2018 14:21:05 +1200
changeset 470823 457462d0bb3d
parent 470822 909e56123552
child 470824 233d36dfd5c9
push id9233
push userryanvm@gmail.com
push date2018-05-17 01:26 +0000
treeherdermozilla-beta@233d36dfd5c9 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersmiko, RyanVM
bugs1460526
milestone61.0
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, a=RyanVM 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());