aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core
diff options
context:
space:
mode:
authorGravatar Mike Reed <reed@google.com>2018-02-07 11:59:57 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-02-07 20:21:02 +0000
commit2179b78ef221b6df73f1b8a085e5ca86e85a525b (patch)
treebd07101764aca42c91a44aa408f25c87621d115a /src/core
parenteac2090b46a195880e85ef9c6f7a100ca9a37cdf (diff)
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 <bsalomon@google.com> Commit-Queue: Mike Reed <reed@google.com>
Diffstat (limited to 'src/core')
-rw-r--r--src/core/SkBitmapDevice.cpp13
1 files changed, 7 insertions, 6 deletions
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<SkPaint> lazyP;
- if (origPaint.getMaskFilter()) {
- lazyP.set(origPaint);
- lazyP.get()->setMaskFilter(origPaint.getMaskFilter()->makeWithLocalMatrix(this->ctm()));
- paint = lazyP.get();
+ SkTCopyOnFirstWrite<SkPaint> paint(origPaint);
+ if (paint->getMaskFilter()) {
+ paint.writable()->setMaskFilter(paint->getMaskFilter()->makeWithLocalMatrix(this->ctm()));
}
BDDraw(this).drawSprite(static_cast<SkBitmapDevice*>(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)) {