Bug 1077842 - Simplify invalid regions for tiled painted layers to avoid complex region operations. r=jrmuizel
--- a/gfx/layers/client/ClientTiledPaintedLayer.h
+++ b/gfx/layers/client/ClientTiledPaintedLayer.h
@@ -50,18 +50,19 @@ protected:
public:
// Override name to distinguish it from ClientPaintedLayer in layer dumps
virtual const char* Name() const { return "TiledPaintedLayer"; }
// PaintedLayer
virtual Layer* AsLayer() { return this; }
virtual void InvalidateRegion(const nsIntRegion& aRegion) {
mInvalidRegion.Or(mInvalidRegion, aRegion);
- mValidRegion.Sub(mValidRegion, aRegion);
- mLowPrecisionValidRegion.Sub(mLowPrecisionValidRegion, aRegion);
+ mInvalidRegion.SimplifyOutward(20);
+ mValidRegion.Sub(mValidRegion, mInvalidRegion);
+ mLowPrecisionValidRegion.Sub(mLowPrecisionValidRegion, mInvalidRegion);
}
// Shadow methods
virtual void FillSpecificAttributes(SpecificLayerAttributes& aAttrs);
virtual ShadowableLayer* AsShadowableLayer() { return this; }
virtual void Disconnect()
{