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
--- 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());