Bug 1564071 - Disable paint skipping for scroll frames that contain a sticky element inside a CSS filter. r=mstange

Differential Revision: https://phabricator.services.mozilla.com/D37604

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Botond Ballo 2019-07-26 23:26:55 +00:00
parent 3561a852a5
commit af4d7feac5
2 changed files with 10 additions and 0 deletions

View File

@ -3535,6 +3535,14 @@ void nsIFrame::BuildDisplayListForStackingContext(
aBuilder, this, &resultList, stickyASR,
aBuilder->CurrentActiveScrolledRoot());
ct.TrackContainer(resultList.GetTop());
// If the sticky element is inside a filter, annotate the scroll frame that
// scrolls the filter as having out-of-flow content inside a filter (this
// inhibits paint skipping).
if (aBuilder->GetFilterASR() && aBuilder->GetFilterASR() == stickyASR) {
aBuilder->GetFilterASR()
->mScrollableFrame->SetHasOutOfFlowContentInsideFilter();
}
}
/* If there's blending, wrap up the list in a blend-mode item. Note

View File

@ -1128,6 +1128,8 @@ class nsDisplayListBuilder {
return mActiveScrolledRootForRootScrollframe;
}
const ActiveScrolledRoot* GetFilterASR() const { return mFilterASR; }
/**
* Transfer off main thread animations to the layer. May be called
* with aBuilder and aItem both null, but only if the caller has