Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9238f59d authored by Nader Jawad's avatar Nader Jawad
Browse files

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
parent 48df6c60
Loading
Loading
Loading
Loading
+7 −0
Original line number Original line Diff line number Diff line
@@ -46,9 +46,16 @@ void StretchMask::draw(GrRecordingContext* context,


    if (mIsDirty) {
    if (mIsDirty) {
        SkCanvas* maskCanvas = mMaskSurface->getCanvas();
        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);
        maskCanvas->drawColor(0, SkBlendMode::kClear);
        TransformCanvas transformCanvas(maskCanvas, SkBlendMode::kSrcOver);
        TransformCanvas transformCanvas(maskCanvas, SkBlendMode::kSrcOver);
        displayList->draw(&transformCanvas);
        displayList->draw(&transformCanvas);
        maskCanvas->restore();
        displayList->mParentMatrix = previousMatrix;
    }
    }


    sk_sp<SkImage> maskImage = mMaskSurface->makeImageSnapshot();
    sk_sp<SkImage> maskImage = mMaskSurface->makeImageSnapshot();