Bug 1396474: When aSetTransform is false, do not rely on the current DT transform when returning the output transform. r=mattwoodrow
MozReview-Commit-ID: 8DbS6dzFVtp
--- a/gfx/layers/RotatedBuffer.cpp
+++ b/gfx/layers/RotatedBuffer.cpp
@@ -297,28 +297,26 @@ RotatedContentBuffer::BorrowDrawTargetFo
// Figure out which quadrant to draw in
int32_t xBoundary = mBufferRect.XMost() - mBufferRotation.x;
int32_t yBoundary = mBufferRect.YMost() - mBufferRotation.y;
XSide sideX = bounds.XMost() <= xBoundary ? RIGHT : LEFT;
YSide sideY = bounds.YMost() <= yBoundary ? BOTTOM : TOP;
IntRect quadrantRect = GetQuadrantRectangle(sideX, sideY);
NS_ASSERTION(quadrantRect.Contains(bounds), "Messed up quadrants");
- mLoanedTransform = mLoanedDrawTarget->GetTransform();
-
- Matrix transform = Matrix(mLoanedTransform)
- .PreTranslate(-quadrantRect.x,
- -quadrantRect.y);
-
if (aSetTransform) {
+ mLoanedTransform = mLoanedDrawTarget->GetTransform();
+ Matrix transform = Matrix(mLoanedTransform)
+ .PreTranslate(-quadrantRect.x,
+ -quadrantRect.y);
mLoanedDrawTarget->SetTransform(transform);
mSetTransform = true;
} else {
MOZ_ASSERT(aOutMatrix);
- *aOutMatrix = transform;
+ *aOutMatrix = Matrix::Translation(-quadrantRect.x, -quadrantRect.y);
mSetTransform = false;
}
return mLoanedDrawTarget;
}
void
BorrowDrawTarget::ReturnDrawTarget(gfx::DrawTarget*& aReturned)