Backout changeset cb1ac88bedc2 (bug 539356) because of performance and correctness regressions

This commit is contained in:
Ehsan Akhgari 2012-07-03 20:14:11 -04:00
Родитель 4530eaefe9
Коммит 8b3c1f653a
8 изменённых файлов: 14 добавлений и 22 удалений

Просмотреть файл

@ -115,7 +115,7 @@ struct LayerPropertiesBase : public LayerProperties
}
result = result.Union(ComputeChangeInternal(aCallback));
result = result.Union(TransformRect(mLayer->GetInvalidRegion().GetBounds(), mTransform));
result = result.Union(TransformRect(mLayer->GetInvalidRect(), mTransform));
if (mMaskLayer && otherMask) {
nsIntRect maskDiff = mMaskLayer->ComputeChange(aCallback);

Просмотреть файл

@ -923,23 +923,23 @@ public:
* Returns the current area of the layer (in layer-space coordinates)
* marked as needed to be recomposited.
*/
const nsIntRegion& GetInvalidRegion() { return mInvalidRegion; }
const nsIntRect& GetInvalidRect() { return mInvalidRect; }
/**
* Mark the entirety of the layer's visible region as being invalid.
*/
void SetInvalidRectToVisibleRegion() { mInvalidRegion = GetVisibleRegion(); }
void SetInvalidRectToVisibleRegion() { mInvalidRect = GetVisibleRegion().GetBounds(); }
/**
* Adds to the current invalid rect.
*/
void AddInvalidRect(const nsIntRect& aRect) { mInvalidRegion.Or(mInvalidRegion, aRect); }
void AddInvalidRect(const nsIntRect& aRect) { mInvalidRect = mInvalidRect.Union(aRect); }
/**
* Clear the invalid rect, marking the layer as being identical to what is currently
* composited.
*/
void ClearInvalidRect() { mInvalidRegion.SetEmpty(); }
void ClearInvalidRect() { mInvalidRect.SetEmpty(); }
#ifdef DEBUG
@ -1006,13 +1006,13 @@ protected:
float mOpacity;
nsIntRect mClipRect;
nsIntRect mTileSourceRect;
nsIntRect mInvalidRect;
PRUint32 mContentFlags;
bool mUseClipRect;
bool mUseTileSourceRect;
bool mIsFixedPosition;
gfxPoint mAnchor;
DebugOnly<PRUint32> mDebugColorIndex;
nsIntRegion mInvalidRegion;
};
/**

Просмотреть файл

@ -37,9 +37,8 @@ public:
{
NS_ASSERTION(BasicManager()->InConstruction(),
"Can only set properties in construction phase");
mInvalidRegion.Or(mInvalidRegion, aRegion);
mInvalidRegion.SimplifyOutward(10);
mValidRegion.Sub(mValidRegion, mInvalidRegion);
mValidRegion.Sub(mValidRegion, aRegion);
AddInvalidRect(aRegion.GetBounds());
}
virtual void PaintThebes(gfxContext* aContext,

Просмотреть файл

@ -53,9 +53,8 @@ void
ThebesLayerD3D10::InvalidateRegion(const nsIntRegion &aRegion)
{
mInvalidRegion.Or(mInvalidRegion, aRegion);
mInvalidRegion.SimplifyOutward(10);
mValidRegion.Sub(mValidRegion, mInvalidRegion);
mValidRegion.Sub(mValidRegion, aRegion);
AddInvalidRect(aRegion.GetBounds());
}
void ThebesLayerD3D10::CopyRegion(ID3D10Texture2D* aSrc, const nsIntPoint &aSrcOffset,

Просмотреть файл

@ -47,9 +47,8 @@ ThebesLayerD3D9::~ThebesLayerD3D9()
void
ThebesLayerD3D9::InvalidateRegion(const nsIntRegion &aRegion)
{
mInvalidRegion.Or(mInvalidRegion, aRegion);
mInvalidRegion.SimplifyOutward(10);
mValidRegion.Sub(mValidRegion, mInvalidRegion);
mValidRegion.Sub(mValidRegion, aRegion);
AddInvalidRect(aRegion.GetBounds());
}
void

Просмотреть файл

@ -784,9 +784,8 @@ ThebesLayerOGL::SetVisibleRegion(const nsIntRegion &aRegion)
void
ThebesLayerOGL::InvalidateRegion(const nsIntRegion &aRegion)
{
mInvalidRegion.Or(mInvalidRegion, aRegion);
mInvalidRegion.SimplifyOutward(10);
mValidRegion.Sub(mValidRegion, mInvalidRegion);
mValidRegion.Sub(mValidRegion, aRegion);
AddInvalidRect(aRegion.GetBounds());
}
void

Просмотреть файл

@ -675,8 +675,6 @@ void nsDisplayList::PaintForFrame(nsDisplayListBuilder* aBuilder,
nsIntRect invalid;
if (props) {
invalid = props->ComputeDifferences(root, computeInvalidFunc);
} else if (widgetTransaction) {
LayerProperties::ClearInvalidations(root);
}
if (view) {

Просмотреть файл

@ -5275,8 +5275,6 @@ PresShell::Paint(nsIView* aViewToPaint,
nsIntRect invalid;
if (props) {
invalid = props->ComputeDifferences(layerManager->GetRoot(), computeInvalidFunc);
} else {
LayerProperties::ClearInvalidations(layerManager->GetRoot());
}
if (!invalid.IsEmpty()) {
if (props) {