Backed out changeset 032ba47c6684 (bug 1022612)

This commit is contained in:
Carsten "Tomcat" Book 2014-07-15 10:30:21 +02:00
parent 19944c8798
commit 93aa7aad04
4 changed files with 30 additions and 5 deletions

View File

@ -2735,6 +2735,7 @@ ContainerState::ProcessDisplayItems(nsDisplayList* aList,
}
aList->AppendToTop(&savedItems);
aList->SetDidComputeVisibility();
}
void

View File

@ -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;
}

View File

@ -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
};
/**

View File

@ -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('-');