From a31312cddd51c896b34c5c3382bcf6c50632d70b Mon Sep 17 00:00:00 2001 From: ericrk Date: Thu, 12 May 2016 09:06:44 -0700 Subject: [PATCH] SkPictureImageFilter - clear local canvas before use In SkPictureImageFilter::onFilterImage, we may create two new surfaces, one for our final output, and one for a local resolution intermediate. We clear the final output surface before use, removing any previous content, however we do not do the same for the local surface. This can lead to content being incorrectly layered on top of previous content when we go down this path. This change adds logic to clear the local surface as well. BUG=610667 GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1969193002 Review-Url: https://codereview.chromium.org/1969193002 --- src/effects/SkPictureImageFilter.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/effects/SkPictureImageFilter.cpp b/src/effects/SkPictureImageFilter.cpp index db283c29e9..bfe26b62c5 100644 --- a/src/effects/SkPictureImageFilter.cpp +++ b/src/effects/SkPictureImageFilter.cpp @@ -177,6 +177,8 @@ void SkPictureImageFilter::drawPictureAtLocalResolution(SkSpecialImage* source, SkCanvas* localCanvas = localSurface->getCanvas(); SkASSERT(localCanvas); + + localCanvas->clear(0x0); localCanvas->translate(-SkIntToScalar(localIBounds.fLeft), -SkIntToScalar(localIBounds.fTop));