Backed out changeset 6d2fc524e961 (bug 1022612)

This commit is contained in:
Carsten "Tomcat" Book 2014-07-15 10:30:46 +02:00
parent 2429264279
commit f47b379c1a

View File

@ -414,22 +414,22 @@ PruneDisplayListForExtraPage(nsDisplayListBuilder* aBuilder,
aList->AppendToTop(&newList); aList->AppendToTop(&newList);
} }
static void static nsresult
BuildDisplayListForExtraPage(nsDisplayListBuilder* aBuilder, BuildDisplayListForExtraPage(nsDisplayListBuilder* aBuilder,
nsPageFrame* aPage, nsIFrame* aExtraPage, nsPageFrame* aPage, nsIFrame* aExtraPage,
const nsRect& aDirtyRect, nsDisplayList* aList) nsDisplayList* aList)
{ {
// The only content in aExtraPage we care about is out-of-flow content whose
// placeholders have occurred in aPage. If
// NS_FRAME_FORCE_DISPLAY_LIST_DESCEND_INTO is not set, then aExtraPage has
// no such content.
if (!aExtraPage->HasAnyStateBits(NS_FRAME_FORCE_DISPLAY_LIST_DESCEND_INTO)) {
return;
}
nsDisplayList list; nsDisplayList list;
aExtraPage->BuildDisplayListForStackingContext(aBuilder, aDirtyRect, &list); // Pass an empty dirty rect since we're only interested in finding
// placeholders whose out-of-flows are in the page
// aBuilder->GetReferenceFrame(), and the paths to those placeholders
// have already been marked as NS_FRAME_FORCE_DISPLAY_LIST_DESCEND_INTO.
// Note that we should still do a prune step since we don't want to
// rely on dirty-rect checking for correctness.
aExtraPage->BuildDisplayListForStackingContext(aBuilder, nsRect(), &list);
PruneDisplayListForExtraPage(aBuilder, aPage, aExtraPage, &list); PruneDisplayListForExtraPage(aBuilder, aPage, aExtraPage, &list);
aList->AppendToTop(&list); aList->AppendToTop(&list);
return NS_OK;
} }
static nsIFrame* static nsIFrame*
@ -506,8 +506,8 @@ nsPageFrame::BuildDisplayList(nsDisplayListBuilder* aBuilder,
clipState.Clear(); clipState.Clear();
clipState.ClipContainingBlockDescendants(clipRect, nullptr); clipState.ClipContainingBlockDescendants(clipRect, nullptr);
nsRect dirtyRect = child->GetVisualOverflowRectRelativeToSelf(); child->BuildDisplayListForStackingContext(aBuilder,
child->BuildDisplayListForStackingContext(aBuilder, dirtyRect, &content); child->GetVisualOverflowRectRelativeToSelf(), &content);
// We may need to paint out-of-flow frames whose placeholders are // We may need to paint out-of-flow frames whose placeholders are
// on other pages. Add those pages to our display list. Note that // on other pages. Add those pages to our display list. Note that
@ -518,8 +518,7 @@ nsPageFrame::BuildDisplayList(nsDisplayListBuilder* aBuilder,
// following placeholders to their out-of-flows) end up on the list. // following placeholders to their out-of-flows) end up on the list.
nsIFrame* page = child; nsIFrame* page = child;
while ((page = GetNextPage(page)) != nullptr) { while ((page = GetNextPage(page)) != nullptr) {
BuildDisplayListForExtraPage(aBuilder, this, page, BuildDisplayListForExtraPage(aBuilder, this, page, &content);
dirtyRect + child->GetOffsetTo(page), &content);
} }
// Add the canvas background color to the bottom of the list. This // Add the canvas background color to the bottom of the list. This