From 2179b78ef221b6df73f1b8a085e5ca86e85a525b Mon Sep 17 00:00:00 2001 From: Mike Reed Date: Wed, 7 Feb 2018 11:59:57 -0500 Subject: extend savelayer_maskfilter to also have an imagefilter Bug: skia:7597 Change-Id: I8af9c9f841c301212a4a452f9b42d03a20e36417 Reviewed-on: https://skia-review.googlesource.com/105220 Reviewed-by: Brian Salomon Commit-Queue: Mike Reed --- src/core/SkBitmapDevice.cpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'src/core') diff --git a/src/core/SkBitmapDevice.cpp b/src/core/SkBitmapDevice.cpp index fe858989ff..3d66ba6dfc 100644 --- a/src/core/SkBitmapDevice.cpp +++ b/src/core/SkBitmapDevice.cpp @@ -379,12 +379,9 @@ void SkBitmapDevice::drawDevice(SkBaseDevice* device, int x, int y, const SkPain SkASSERT(!origPaint.getImageFilter()); // todo: can we unify with similar adjustment in SkGpuDevice? - const SkPaint* paint = &origPaint; - SkTLazy lazyP; - if (origPaint.getMaskFilter()) { - lazyP.set(origPaint); - lazyP.get()->setMaskFilter(origPaint.getMaskFilter()->makeWithLocalMatrix(this->ctm())); - paint = lazyP.get(); + SkTCopyOnFirstWrite paint(origPaint); + if (paint->getMaskFilter()) { + paint.writable()->setMaskFilter(paint->getMaskFilter()->makeWithLocalMatrix(this->ctm())); } BDDraw(this).drawSprite(static_cast(device)->fBitmap, x, y, *paint); @@ -443,6 +440,10 @@ void SkBitmapDevice::drawSpecial(SkSpecialImage* src, int x, int y, const SkPain y += offset.y(); } + if (paint->getMaskFilter()) { + paint.writable()->setMaskFilter(paint->getMaskFilter()->makeWithLocalMatrix(this->ctm())); + } + if (!clipImage) { SkBitmap resultBM; if (src->getROPixels(&resultBM)) { -- cgit v1.2.3