Bug 902525 - Part 5: fixes for blending of HTML elements r=roc

This commit is contained in:
Rik Cabanier 2013-09-15 16:43:10 -07:00
parent 32a4f10813
commit 4ef2fc4460
3 changed files with 7 additions and 3 deletions

View File

@ -27,7 +27,8 @@ BasicCanvasLayer::Paint(gfxContext* aContext, Layer* aMaskLayer)
UpdateSurface();
FireDidTransactionCallback();
PaintWithOpacity(aContext, GetEffectiveOpacity(), aMaskLayer, GetOperator());
gfxContext::GraphicsOperator mixBlendMode = GetEffectiveMixBlendMode();
PaintWithOpacity(aContext, GetEffectiveOpacity(), aMaskLayer, mixBlendMode != gfxContext::OPERATOR_OVER ? mixBlendMode : GetOperator());
}
already_AddRefed<CanvasLayer>

View File

@ -48,7 +48,8 @@ public:
if (IsHidden())
return;
gfxContextAutoSaveRestore contextSR(aContext);
AutoSetOperator setOperator(aContext, GetOperator());
gfxContext::GraphicsOperator mixBlendMode = GetEffectiveMixBlendMode();
AutoSetOperator setOptimizedOperator(aContext, mixBlendMode != gfxContext::OPERATOR_OVER ? mixBlendMode : GetOperator());
aContext->SetColor(mColor);

View File

@ -110,7 +110,9 @@ BasicImageLayer::GetAndPaintCurrentImage(gfxContext* aContext,
// The visible region can extend outside the image, so just draw
// within the image bounds.
if (aContext) {
AutoSetOperator setOperator(aContext, GetOperator());
gfxContext::GraphicsOperator mixBlendMode = GetEffectiveMixBlendMode();
AutoSetOperator setOptimizedOperator(aContext, mixBlendMode != gfxContext::OPERATOR_OVER ? mixBlendMode : GetOperator());
PaintContext(pat,
nsIntRegion(nsIntRect(0, 0, size.width, size.height)),
aOpacity, aContext, aMaskLayer);