Bug 1077358 - Clip BasicColorLayer drawing to the layer's bounds. r=Bas
--- a/gfx/layers/basic/BasicColorLayer.cpp
+++ b/gfx/layers/basic/BasicColorLayer.cpp
@@ -57,19 +57,22 @@ public:
Rect snapped(mBounds.x, mBounds.y, mBounds.width, mBounds.height);
if (UserToDevicePixelSnapped(snapped, aDT->GetTransform())) {
Matrix mat = aDT->GetTransform();
mat.Invert();
snapped = mat.TransformBounds(snapped);
}
+ // Clip drawing in case we're using (unbounded) operator source.
+ aDT->PushClipRect(snapped);
FillRectWithMask(aDT, aDeviceOffset, snapped, ToColor(mColor),
DrawOptions(GetEffectiveOpacity(), GetEffectiveOperator(this)),
aMaskLayer);
+ aDT->PopClip();
}
protected:
BasicLayerManager* BasicManager()
{
return static_cast<BasicLayerManager*>(mManager);
}
};