Provide proper transform to mask canvas

Updated mask canvas to have the same
transformation applied to the initial
target canvas and device

Bug: 184297961
Test: manual
Change-Id: Ibdeefba8ec9f95f4acd7e3176f43a5e603e76676
This commit is contained in:
Nader Jawad
2021-05-11 20:13:29 -07:00
parent 48df6c6055
commit 9238f59d97

View File

@@ -46,9 +46,16 @@ void StretchMask::draw(GrRecordingContext* context,
if (mIsDirty) {
SkCanvas* maskCanvas = mMaskSurface->getCanvas();
// Make sure to apply target transformation to the mask canvas
// to ensure the replayed drawing commands generate the same result
auto previousMatrix = displayList->mParentMatrix;
displayList->mParentMatrix = maskCanvas->getTotalMatrix();
maskCanvas->save();
maskCanvas->drawColor(0, SkBlendMode::kClear);
TransformCanvas transformCanvas(maskCanvas, SkBlendMode::kSrcOver);
displayList->draw(&transformCanvas);
maskCanvas->restore();
displayList->mParentMatrix = previousMatrix;
}
sk_sp<SkImage> maskImage = mMaskSurface->makeImageSnapshot();