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."); |