aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/SkCanvas.cpp
diff options
context:
space:
mode:
authorGravatar reed <reed@google.com>2015-03-20 06:32:52 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2015-03-20 06:32:52 -0700
commit8dc0ccb8d33d1af7dd13228509e61fe915bc7705 (patch)
tree5fcae0ab9146e078ea8c82394dcb445e0f5dc521 /src/core/SkCanvas.cpp
parent40b7dd57ef1f4e91af72512d8ca57459b99d71bd (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.cpp7
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.");