summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Nader Jawad <njawad@google.com> 2021-05-11 20:13:29 -0700
committer Nader Jawad <njawad@google.com> 2021-05-12 12:16:26 -0700
commit9238f59d97dd154575f68997744a0697e4f3091a (patch)
treeb9ab70dac8baab4aef53328c675c3f7d80f4786b
parent48df6c6055eaf7bee342537f87174c74c470668a (diff)
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
-rw-r--r--libs/hwui/pipeline/skia/StretchMask.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/libs/hwui/pipeline/skia/StretchMask.cpp b/libs/hwui/pipeline/skia/StretchMask.cpp
index 2bbd8a4fa028..1c58c6a5d440 100644
--- a/libs/hwui/pipeline/skia/StretchMask.cpp
+++ b/libs/hwui/pipeline/skia/StretchMask.cpp
@@ -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();