Bug 1318266 - Part 4. Update mask transform. r=mstange

Test scenario:
1. Hide menu bar
2. Press alt key to make menu bar appear.
3. Without this patch, the poistion of clip-path mask on the tab is not correct.

That is because we do not update mask transform of cached mask.
MozReview-Commit-ID: HPFYPYv7ubB

--HG--
extra : rebase_source : ec5aa4a05578a53a9961b86c8804ba53f810c4c4
This commit is contained in:
cku 2016-12-19 22:33:36 +08:00
parent 33bfa082b6
commit 60798112c4

View File

@ -3885,6 +3885,15 @@ ContainerState::SetupMaskLayerForCSSMask(Layer* aLayer,
bool snap;
nsRect bounds = aMaskItem->GetBounds(mBuilder, &snap);
nsIntRect itemRect = ScaleToOutsidePixels(bounds, snap);
// Setup mask layer offset.
// We do not repaint mask for mask position change, so update base transform
// each time is required.
Matrix4x4 matrix;
matrix.PreTranslate(itemRect.x, itemRect.y, 0);
matrix.PreTranslate(mParameters.mOffset.x, mParameters.mOffset.y, 0);
maskLayer->SetBaseTransform(matrix);
CSSMaskLayerUserData newUserData(aMaskItem->Frame(), itemRect.Size());
nsRect dirtyRect;
if (!aMaskItem->IsInvalid(dirtyRect) && *oldUserData == newUserData) {
@ -3916,13 +3925,6 @@ ContainerState::SetupMaskLayerForCSSMask(Layer* aLayer,
return;
}
// Setup mask layer offset.
Matrix4x4 matrix;
matrix.PreTranslate(itemRect.x, itemRect.y, 0);
matrix.PreTranslate(mParameters.mOffset.x, mParameters.mOffset.y, 0);
maskLayer->SetBaseTransform(matrix);
RefPtr<ImageContainer> imgContainer =
imageData.CreateImageAndImageContainer();
if (!imgContainer) {