Index: src/core/SkCanvas.cpp |
diff --git a/src/core/SkCanvas.cpp b/src/core/SkCanvas.cpp |
index 6914963cb9e1fc738f71773af60ffb7fc7759849..df89d9f00faa6cf9492fd50d2ad7be1d2f29e181 100644 |
--- a/src/core/SkCanvas.cpp |
+++ b/src/core/SkCanvas.cpp |
@@ -1298,6 +1298,13 @@ void SkCanvas::internalDrawDevice(SkBaseDevice* srcDev, int x, int y, |
SkBaseDevice* dstDev = iter.fDevice; |
paint = &looper.paint(); |
SkImageFilter* filter = paint->getImageFilter(); |
+ |
+ SkAutoTUnref<SkImageFilter> localFilter; |
+ if (filter) { |
+ localFilter.reset(filter->newWithLocalMatrix(SkMatrix::I())); |
+ filter = localFilter; |
+ } |
+ |
SkIPoint pos = { x - iter.getX(), y - iter.getY() }; |
if (filter && !dstDev->canHandleImageFilter(filter)) { |
SkImageFilter::DeviceProxy proxy(dstDev); |
@@ -1350,6 +1357,13 @@ void SkCanvas::onDrawSprite(const SkBitmap& bitmap, int x, int y, const SkPaint* |
while (iter.next()) { |
paint = &looper.paint(); |
SkImageFilter* filter = paint->getImageFilter(); |
+ |
+ SkAutoTUnref<SkImageFilter> localFilter; |
+ if (filter) { |
+ localFilter.reset(filter->newWithLocalMatrix(SkMatrix::I())); |
+ filter = localFilter; |
+ } |
+ |
SkIPoint pos = { x - iter.getX(), y - iter.getY() }; |
if (filter && !iter.fDevice->canHandleImageFilter(filter)) { |
SkImageFilter::DeviceProxy proxy(iter.fDevice); |