Make SkSpecialSurfaces always use kUnknown for their pixel geometry
authorrobertphillips <robertphillips@google.com>
Wed, 13 Apr 2016 14:18:41 +0000 (07:18 -0700)
committerCommit bot <commit-bot@chromium.org>
Wed, 13 Apr 2016 14:18:41 +0000 (07:18 -0700)
This now matches how the SkDevices were being created by the device proxy and prevents LCD text from being inadvertently applied.

BUG=602555

GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1878143004

Review URL: https://codereview.chromium.org/1878143004

src/core/SkSpecialSurface.cpp
src/effects/SkPictureImageFilter.cpp

index 7dced71..83a0ee7 100644 (file)
@@ -44,7 +44,7 @@ static SkSpecialSurface_Base* as_SB(SkSpecialSurface* surface) {
 SkSpecialSurface::SkSpecialSurface(SkImageFilter::Proxy* proxy,
                                    const SkIRect& subset,
                                    const SkSurfaceProps* props)
-    : fProps(SkSurfacePropsCopyOrDefault(props))
+    : fProps(SkSurfacePropsCopyOrDefault(props).flags(), kUnknown_SkPixelGeometry)
     , fSubset(subset)
     , fProxy(proxy) {
     SkASSERT(fSubset.width() > 0);
@@ -76,7 +76,7 @@ public:
         fBitmap.setInfo(info, info.minRowBytes());
         fBitmap.setPixelRef(pr);
 
-        fCanvas.reset(new SkCanvas(fBitmap));
+        fCanvas.reset(new SkCanvas(fBitmap, this->props()));
     }
 
     ~SkSpecialSurface_Raster() override { }
index 623be2b..8e0115c 100644 (file)
@@ -108,9 +108,9 @@ sk_sp<SkSpecialImage> SkPictureImageFilter::onFilterImage(SkSpecialImage* source
 
     canvas->clear(0x0);
 
-    if (kDeviceSpace_PictureResolution == fPictureResolution || 
+    if (kDeviceSpace_PictureResolution == fPictureResolution ||
         0 == (ctx.ctm().getType() & ~SkMatrix::kTranslate_Mask)) {
-        this->drawPictureAtDeviceResolution(canvas, bounds, ctx);        
+        this->drawPictureAtDeviceResolution(canvas, bounds, ctx);
     } else {
         this->drawPictureAtLocalResolution(source, canvas, bounds, ctx);
     }