зеркало из https://github.com/mozilla/gecko-dev.git
Backed out changeset 032ba47c6684 (bug 1022612)
This commit is contained in:
Родитель
00bffdd365
Коммит
69f40e9ed0
|
@ -2735,6 +2735,7 @@ ContainerState::ProcessDisplayItems(nsDisplayList* aList,
|
|||
}
|
||||
|
||||
aList->AppendToTop(&savedItems);
|
||||
aList->SetDidComputeVisibility();
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -1221,6 +1221,9 @@ nsDisplayList::ComputeVisibilityForSublist(nsDisplayListBuilder* aBuilder,
|
|||
|
||||
mIsOpaque = !aVisibleRegion->Intersects(mVisibleRect);
|
||||
mForceTransparentSurface = forceTransparentSurface;
|
||||
#if defined(DEBUG) || defined(MOZ_DUMP_PAINTING)
|
||||
mDidComputeVisibility = true;
|
||||
#endif
|
||||
return anyVisible;
|
||||
}
|
||||
|
||||
|
|
|
@ -1425,12 +1425,14 @@ public:
|
|||
/**
|
||||
* Create an empty list.
|
||||
*/
|
||||
nsDisplayList()
|
||||
: mIsOpaque(false)
|
||||
, mForceTransparentSurface(false)
|
||||
nsDisplayList() :
|
||||
mIsOpaque(false)
|
||||
{
|
||||
mTop = &mSentinel;
|
||||
mSentinel.mAbove = nullptr;
|
||||
#if defined(DEBUG) || defined(MOZ_DUMP_PAINTING)
|
||||
mDidComputeVisibility = false;
|
||||
#endif
|
||||
}
|
||||
~nsDisplayList() {
|
||||
if (mSentinel.mAbove) {
|
||||
|
@ -1616,13 +1618,16 @@ public:
|
|||
* empty, i.e. everything visible in this list is opaque.
|
||||
*/
|
||||
bool IsOpaque() const {
|
||||
NS_ASSERTION(mDidComputeVisibility, "Need to have called ComputeVisibility");
|
||||
return mIsOpaque;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if any display item requires the surface to be transparent.
|
||||
* Returns true if during ComputeVisibility any display item
|
||||
* set the surface to be transparent.
|
||||
*/
|
||||
bool NeedsTransparentSurface() const {
|
||||
NS_ASSERTION(mDidComputeVisibility, "Need to have called ComputeVisibility");
|
||||
return mForceTransparentSurface;
|
||||
}
|
||||
/**
|
||||
|
@ -1681,6 +1686,16 @@ public:
|
|||
nsDisplayItem::HitTestState* aState,
|
||||
nsTArray<nsIFrame*> *aOutFrames) const;
|
||||
|
||||
#if defined(DEBUG) || defined(MOZ_DUMP_PAINTING)
|
||||
bool DidComputeVisibility() const { return mDidComputeVisibility; }
|
||||
#endif
|
||||
|
||||
void SetDidComputeVisibility()
|
||||
{
|
||||
#if defined(DEBUG) || defined(MOZ_DUMP_PAINTING)
|
||||
mDidComputeVisibility = true;
|
||||
#endif
|
||||
}
|
||||
void SetIsOpaque()
|
||||
{
|
||||
mIsOpaque = true;
|
||||
|
@ -1712,6 +1727,9 @@ private:
|
|||
// This is set to true by ComputeVisibility if any display item in this
|
||||
// list needs to force the surface containing this list to be transparent.
|
||||
bool mForceTransparentSurface;
|
||||
#if defined(DEBUG) || defined(MOZ_DUMP_PAINTING)
|
||||
bool mDidComputeVisibility;
|
||||
#endif
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
@ -154,7 +154,10 @@ PrintDisplayItemTo(nsDisplayListBuilder* aBuilder, nsDisplayItem* aItem,
|
|||
nsRect component = aItem->GetComponentAlphaBounds(aBuilder);
|
||||
nsDisplayList* list = aItem->GetChildren();
|
||||
const DisplayItemClip& clip = aItem->GetClip();
|
||||
nsRegion opaque = aItem->GetOpaqueRegion(aBuilder, &snap);
|
||||
nsRegion opaque;
|
||||
if (!list || list->DidComputeVisibility()) {
|
||||
opaque = aItem->GetOpaqueRegion(aBuilder, &snap);
|
||||
}
|
||||
if (aDumpHtml && aItem->Painted()) {
|
||||
nsCString string(aItem->Name());
|
||||
string.Append('-');
|
||||
|
|
Загрузка…
Ссылка в новой задаче