зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1432968 - Cache the value of In3DContextAndBackfaceIsHidden during display list buidling. r=miko
--HG-- extra : rebase_source : d22ade7260b9e1ea71837b9a262e2ebd931902b9
This commit is contained in:
Родитель
af8879d1eb
Коммит
28b39888b0
|
@ -3606,7 +3606,7 @@ ContainerState::NewPaintedLayerData(nsDisplayItem* aItem,
|
|||
data.mClipChain = aClipChain;
|
||||
data.mAnimatedGeometryRootOffset = aTopLeft;
|
||||
data.mReferenceFrame = aItem->ReferenceFrame();
|
||||
data.mBackfaceHidden = aItem->Frame()->In3DContextAndBackfaceIsHidden();
|
||||
data.mBackfaceHidden = aItem->In3DContextAndBackfaceIsHidden();
|
||||
|
||||
data.mNewChildLayersIndex = mNewChildLayers.Length();
|
||||
NewLayerEntry* newLayerEntry = mNewChildLayers.AppendElement();
|
||||
|
@ -4442,7 +4442,7 @@ ContainerState::ProcessDisplayItems(nsDisplayList* aList)
|
|||
PaintedLayerData* paintedLayerData =
|
||||
mPaintedLayerDataTree.FindPaintedLayerFor(animatedGeometryRoot, itemASR, layerClipChain,
|
||||
itemVisibleRect,
|
||||
item->Frame()->In3DContextAndBackfaceIsHidden(),
|
||||
item->In3DContextAndBackfaceIsHidden(),
|
||||
[&]() {
|
||||
return NewPaintedLayerData(item, animatedGeometryRoot, itemASR, layerClipChain, scrollMetadataASR,
|
||||
topLeft);
|
||||
|
|
|
@ -2949,6 +2949,7 @@ nsDisplayItem::nsDisplayItem(nsDisplayListBuilder* aBuilder, nsIFrame* aFrame,
|
|||
, mForceNotVisible(aBuilder->IsBuildingInvisibleItems())
|
||||
, mDisableSubpixelAA(false)
|
||||
, mReusedItem(false)
|
||||
, mBackfaceHidden(mFrame->In3DContextAndBackfaceIsHidden())
|
||||
#ifdef MOZ_DUMP_PAINTING
|
||||
, mPainted(false)
|
||||
#endif
|
||||
|
|
|
@ -2003,6 +2003,7 @@ public:
|
|||
, mForceNotVisible(false)
|
||||
, mDisableSubpixelAA(false)
|
||||
, mReusedItem(false)
|
||||
, mBackfaceHidden(mFrame->In3DContextAndBackfaceIsHidden())
|
||||
#ifdef MOZ_DUMP_PAINTING
|
||||
, mPainted(false)
|
||||
#endif
|
||||
|
@ -2074,6 +2075,7 @@ public:
|
|||
, mForceNotVisible(aOther.mForceNotVisible)
|
||||
, mDisableSubpixelAA(aOther.mDisableSubpixelAA)
|
||||
, mReusedItem(false)
|
||||
, mBackfaceHidden(mFrame->In3DContextAndBackfaceIsHidden())
|
||||
#ifdef MOZ_DUMP_PAINTING
|
||||
, mPainted(false)
|
||||
#endif
|
||||
|
@ -2704,16 +2706,7 @@ public:
|
|||
|
||||
bool In3DContextAndBackfaceIsHidden()
|
||||
{
|
||||
if (mBackfaceHidden) {
|
||||
return *mBackfaceHidden;
|
||||
}
|
||||
|
||||
// We never need to invalidate this cached value since we're
|
||||
// guaranteed to rebuild the display item entirely if it changes.
|
||||
bool backfaceHidden = Frame()->In3DContextAndBackfaceIsHidden();
|
||||
mBackfaceHidden.emplace(backfaceHidden);
|
||||
|
||||
return backfaceHidden;
|
||||
return mBackfaceHidden;
|
||||
}
|
||||
|
||||
bool HasSameTypeAndClip(const nsDisplayItem* aOther) const
|
||||
|
@ -2774,11 +2767,11 @@ protected:
|
|||
bool mForceNotVisible;
|
||||
bool mDisableSubpixelAA;
|
||||
bool mReusedItem;
|
||||
bool mBackfaceHidden;
|
||||
#ifdef MOZ_DUMP_PAINTING
|
||||
// True if this frame has been painted.
|
||||
bool mPainted;
|
||||
#endif
|
||||
mozilla::Maybe<bool> mBackfaceHidden;
|
||||
|
||||
struct {
|
||||
nsRect mVisibleRect;
|
||||
|
|
Загрузка…
Ссылка в новой задаче