Bug 895116: Lock the mask texture before compositing with BasicCompositor r=bas

This commit is contained in:
David Zbarsky 2013-07-29 16:04:09 -07:00
parent 1c42b9acd0
commit 407c5d4f16

View File

@ -291,6 +291,7 @@ BasicCompositor::DrawQuad(const gfx::Rect& aRect, const gfx::Rect& aClipRect,
Matrix maskTransform;
if (aEffectChain.mSecondaryEffects[EFFECT_MASK]) {
EffectMask *effectMask = static_cast<EffectMask*>(aEffectChain.mSecondaryEffects[EFFECT_MASK].get());
static_cast<DeprecatedTextureHost*>(effectMask->mMaskTexture)->Lock();
sourceMask = effectMask->mMaskTexture->AsSourceBasic()->GetSurface();
MOZ_ASSERT(effectMask->mMaskTransform.Is2D(), "How did we end up with a 3D transform here?!");
MOZ_ASSERT(!effectMask->mIs3D);
@ -348,6 +349,11 @@ BasicCompositor::DrawQuad(const gfx::Rect& aRect, const gfx::Rect& aClipRect,
}
}
if (aEffectChain.mSecondaryEffects[EFFECT_MASK]) {
EffectMask *effectMask = static_cast<EffectMask*>(aEffectChain.mSecondaryEffects[EFFECT_MASK].get());
static_cast<DeprecatedTextureHost*>(effectMask->mMaskTexture)->Unlock();
}
dest->SetTransform(oldTransform);
dest->PopClip();
}