Chromium Code Reviews| Index: src/core/SkCanvas.cpp |
| diff --git a/src/core/SkCanvas.cpp b/src/core/SkCanvas.cpp |
| index 11dc739f4c4dc6aa0509f8ba404a56fa246817e4..8426f090ec5949653ab516ffca3f7d33a317c338 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) { |
|
robertphillips
2015/03/19 19:11:49
test the color filter path too?
reed1
2015/03/19 20:07:36
i.e. in the gm? good idea.
|
| // 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."); |