зеркало из https://github.com/mozilla/gecko-dev.git
45dff4d7bb
With retained display lists, a content render root might get marked as not needing a build, in which case the nsDisplayRenderRoot::CreateWRCommands function does an early exit. In this case, we don't mark the associated WebRenderUserData as used during the display list build, which causes it to get deleted at the end of the transaction. The next transaction that doesn't early-exit will re-create the WebRenderUserData with a new boundary object. The compositor therefore thinks it's a brand new thing and, if conditions are right, could end up destroying and re-creating much of the APZC tree. That in turn can have effects like discarding paint-skipped scrolling. This patch ensures we always touch the WebRenderUserData during the display list build, so we don't discard it. This problem may still affect nested nsDisplayRenderRoot instances but I don't think we ever cases where those occur. Depends on D36386 Differential Revision: https://phabricator.services.mozilla.com/D36387 --HG-- extra : moz-landing-system : lando |
||
---|---|---|
.. | ||
crashtests | ||
ActiveLayerTracker.cpp | ||
ActiveLayerTracker.h | ||
BorderCache.h | ||
BorderConsts.h | ||
DashedCornerFinder.cpp | ||
DashedCornerFinder.h | ||
DisplayItemClip.cpp | ||
DisplayItemClip.h | ||
DisplayItemClipChain.cpp | ||
DisplayItemClipChain.h | ||
DisplayListChecker.cpp | ||
DisplayListChecker.h | ||
DisplayListClipState.cpp | ||
DisplayListClipState.h | ||
DottedCornerFinder.cpp | ||
DottedCornerFinder.h | ||
FrameLayerBuilder.cpp | ||
FrameLayerBuilder.h | ||
LayerState.h | ||
MaskLayerImageCache.cpp | ||
MaskLayerImageCache.h | ||
MatrixStack.h | ||
PaintTracker.cpp | ||
PaintTracker.h | ||
RetainedDisplayListBuilder.cpp | ||
RetainedDisplayListBuilder.h | ||
RetainedDisplayListHelpers.h | ||
TransformClipNode.h | ||
moz.build | ||
nsCSSRendering.cpp | ||
nsCSSRendering.h | ||
nsCSSRenderingBorders.cpp | ||
nsCSSRenderingBorders.h | ||
nsCSSRenderingGradients.cpp | ||
nsCSSRenderingGradients.h | ||
nsDisplayItemTypes.h | ||
nsDisplayItemTypesList.h | ||
nsDisplayList.cpp | ||
nsDisplayList.h | ||
nsDisplayListInvalidation.cpp | ||
nsDisplayListInvalidation.h | ||
nsImageRenderer.cpp | ||
nsImageRenderer.h |