aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--gm/pictureimagefilter.cpp1
-rw-r--r--src/core/SkSpecialSurface.cpp6
-rw-r--r--src/effects/SkXfermodeImageFilter.cpp2
3 files changed, 8 insertions, 1 deletions
diff --git a/gm/pictureimagefilter.cpp b/gm/pictureimagefilter.cpp
index 30586b3dbe..244ed87afd 100644
--- a/gm/pictureimagefilter.cpp
+++ b/gm/pictureimagefilter.cpp
@@ -26,7 +26,6 @@ static void fill_rect_filtered(SkCanvas* canvas,
static sk_sp<SkPicture> make_picture() {
SkPictureRecorder recorder;
SkCanvas* canvas = recorder.beginRecording(100, 100, nullptr, 0);
- canvas->clear(SK_ColorBLACK);
SkPaint paint;
paint.setAntiAlias(true);
sk_tool_utils::set_portable_typeface(&paint);
diff --git a/src/core/SkSpecialSurface.cpp b/src/core/SkSpecialSurface.cpp
index 335e206a6a..dee9811f95 100644
--- a/src/core/SkSpecialSurface.cpp
+++ b/src/core/SkSpecialSurface.cpp
@@ -74,6 +74,9 @@ public:
fCanvas.reset(new SkCanvas(fBitmap, this->props()));
fCanvas->clipRect(SkRect::Make(subset));
+#ifdef SK_IS_BOT
+ fCanvas->clear(SK_ColorRED); // catch any imageFilter sloppiness
+#endif
}
~SkSpecialSurface_Raster() override { }
@@ -130,6 +133,9 @@ public:
fCanvas.reset(new SkCanvas(device.get()));
fCanvas->clipRect(SkRect::Make(subset));
+#ifdef SK_IS_BOT
+ fCanvas->clear(SK_ColorRED); // catch any imageFilter sloppiness
+#endif
}
~SkSpecialSurface_Gpu() override { }
diff --git a/src/effects/SkXfermodeImageFilter.cpp b/src/effects/SkXfermodeImageFilter.cpp
index 99ce24f129..d4756e8e78 100644
--- a/src/effects/SkXfermodeImageFilter.cpp
+++ b/src/effects/SkXfermodeImageFilter.cpp
@@ -104,6 +104,8 @@ sk_sp<SkSpecialImage> SkXfermodeImageFilter::onFilterImage(SkSpecialImage* sourc
SkCanvas* canvas = surf->getCanvas();
SkASSERT(canvas);
+ canvas->clear(0x0); // can't count on background to fully clear the background
+
canvas->translate(SkIntToScalar(-bounds.left()), SkIntToScalar(-bounds.top()));
SkPaint paint;