Chromium Code Reviews| Index: src/core/SkCanvas.cpp |
| diff --git a/src/core/SkCanvas.cpp b/src/core/SkCanvas.cpp |
| index e53a104c47fa28406f1d440dbcd670365d877a24..b12f63d356253783ee33dc941a9bf529c771cbf4 100644 |
| --- a/src/core/SkCanvas.cpp |
| +++ b/src/core/SkCanvas.cpp |
| @@ -696,6 +696,7 @@ SkCanvas::SkCanvas() |
| : fMCStack(sizeof(MCRec), fMCRecStorage, sizeof(fMCRecStorage)) |
| , fProps(SkSurfaceProps::kLegacyFontHost_InitType) |
| , fConservativeRasterClip(false) |
| + , fLayerAllocator(nullptr) |
|
reed1
2016/09/16 13:15:00
Are any of these (nullptr) initializers needed, gi
tomhudson
2016/09/28 21:23:57
Done.
|
| { |
| inc_canvas(); |
| @@ -725,6 +726,7 @@ SkCanvas::SkCanvas(int width, int height, const SkSurfaceProps* props) |
| : fMCStack(sizeof(MCRec), fMCRecStorage, sizeof(fMCRecStorage)) |
| , fProps(SkSurfacePropsCopyOrDefault(props)) |
| , fConservativeRasterClip(false) |
| + , fLayerAllocator(nullptr) |
| { |
| inc_canvas(); |
| @@ -736,6 +738,7 @@ SkCanvas::SkCanvas(const SkIRect& bounds, InitFlags flags) |
| : fMCStack(sizeof(MCRec), fMCRecStorage, sizeof(fMCRecStorage)) |
| , fProps(SkSurfaceProps::kLegacyFontHost_InitType) |
| , fConservativeRasterClip(false) |
| + , fLayerAllocator(nullptr) |
| { |
| inc_canvas(); |
| @@ -746,6 +749,7 @@ SkCanvas::SkCanvas(SkBaseDevice* device) |
| : fMCStack(sizeof(MCRec), fMCRecStorage, sizeof(fMCRecStorage)) |
| , fProps(device->surfaceProps()) |
| , fConservativeRasterClip(false) |
| + , fLayerAllocator(nullptr) |
| { |
| inc_canvas(); |
| @@ -756,6 +760,7 @@ SkCanvas::SkCanvas(SkBaseDevice* device, InitFlags flags) |
| : fMCStack(sizeof(MCRec), fMCRecStorage, sizeof(fMCRecStorage)) |
| , fProps(device->surfaceProps()) |
| , fConservativeRasterClip(false) |
| + , fLayerAllocator(nullptr) |
| { |
| inc_canvas(); |
| @@ -766,6 +771,7 @@ SkCanvas::SkCanvas(const SkBitmap& bitmap, const SkSurfaceProps& props) |
| : fMCStack(sizeof(MCRec), fMCRecStorage, sizeof(fMCRecStorage)) |
| , fProps(props) |
| , fConservativeRasterClip(false) |
| + , fLayerAllocator(nullptr) |
| { |
| inc_canvas(); |
| @@ -777,6 +783,20 @@ SkCanvas::SkCanvas(const SkBitmap& bitmap) |
| : fMCStack(sizeof(MCRec), fMCRecStorage, sizeof(fMCRecStorage)) |
| , fProps(SkSurfaceProps::kLegacyFontHost_InitType) |
| , fConservativeRasterClip(false) |
| + , fLayerAllocator(nullptr) |
| +{ |
| + inc_canvas(); |
| + |
| + SkAutoTUnref<SkBaseDevice> device(new SkBitmapDevice(bitmap, fProps)); |
| + this->init(device, kDefault_InitFlags); |
| +} |
| + |
| +SkCanvas::SkCanvas(const SkBitmap& bitmap, |
| + SkRasterCanvasLayerAllocator* allocator) |
| + : fMCStack(sizeof(MCRec), fMCRecStorage, sizeof(fMCRecStorage)) |
| + , fProps(SkSurfaceProps::kLegacyFontHost_InitType) |
| + , fConservativeRasterClip(false) |
| + , fLayerAllocator(allocator) |
| { |
| inc_canvas(); |
|
tomhudson
2016/09/16 12:48:28
Should probably put an SkASSERT() here to guarante
|
| @@ -1266,7 +1286,7 @@ void SkCanvas::internalSaveLayer(const SaveLayerRec& rec, SaveLayerStrategy stra |
| const SkBaseDevice::TileUsage usage = SkBaseDevice::kNever_TileUsage; |
| const SkBaseDevice::CreateInfo createInfo = SkBaseDevice::CreateInfo(info, usage, geo, |
| preserveLCDText); |
| - newDevice.reset(priorDevice->onCreateDevice(createInfo, paint)); |
| + newDevice.reset(priorDevice->onCreateDevice(createInfo, paint, fLayerAllocator.get())); |
| if (!newDevice) { |
| SkErrorInternals::SetError(kInternalError_SkError, |
| "Unable to create device for layer."); |