diff options
author | 2015-03-20 06:32:52 -0700 | |
---|---|---|
committer | 2015-03-20 06:32:52 -0700 | |
commit | 8dc0ccb8d33d1af7dd13228509e61fe915bc7705 (patch) | |
tree | 5fcae0ab9146e078ea8c82394dcb445e0f5dc521 /src/core/SkCanvas.cpp | |
parent | 40b7dd57ef1f4e91af72512d8ca57459b99d71bd (diff) |
disable LCD for layers w/ filters
BUG=468311
see also skiabug.com/3567
Review URL: https://codereview.chromium.org/1002603003
Diffstat (limited to 'src/core/SkCanvas.cpp')
-rw-r--r-- | src/core/SkCanvas.cpp | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/core/SkCanvas.cpp b/src/core/SkCanvas.cpp index 11dc739f4c..8426f090ec 100644 --- a/src/core/SkCanvas.cpp +++ b/src/core/SkCanvas.cpp @@ -918,10 +918,12 @@ void SkCanvas::internalSaveLayer(const SkRect* bounds, const SkPaint* paint, Sav } bool isOpaque = !SkToBool(flags & kHasAlphaLayer_SaveFlag); - if (isOpaque && paint) { + SkPixelGeometry geo = fProps.pixelGeometry(); + if (paint) { // TODO: perhaps add a query to filters so we might preserve opaqueness... if (paint->getImageFilter() || paint->getColorFilter()) { isOpaque = false; + geo = kUnknown_SkPixelGeometry; } } SkImageInfo info = SkImageInfo::MakeN32(ir.width(), ir.height(), @@ -942,8 +944,7 @@ void SkCanvas::internalSaveLayer(const SkRect* bounds, const SkPaint* paint, Sav usage = SkBaseDevice::kPossible_TileUsage; } #endif - device = device->onCreateDevice(SkBaseDevice::CreateInfo(info, usage, fProps.pixelGeometry()), - paint); + device = device->onCreateDevice(SkBaseDevice::CreateInfo(info, usage, geo), paint); if (NULL == device) { SkErrorInternals::SetError( kInternalError_SkError, "Unable to create device for layer."); |