diff options
author | 2021-05-11 20:13:29 -0700 | |
---|---|---|
committer | 2021-05-12 12:16:26 -0700 | |
commit | 9238f59d97dd154575f68997744a0697e4f3091a (patch) | |
tree | b9ab70dac8baab4aef53328c675c3f7d80f4786b | |
parent | 48df6c6055eaf7bee342537f87174c74c470668a (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.cpp | 7 |
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(); |