diff options
Diffstat (limited to 'src/core/SkPicturePlayback.cpp')
-rw-r--r-- | src/core/SkPicturePlayback.cpp | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/core/SkPicturePlayback.cpp b/src/core/SkPicturePlayback.cpp index c3f24b95e1..148237a5a8 100644 --- a/src/core/SkPicturePlayback.cpp +++ b/src/core/SkPicturePlayback.cpp @@ -168,6 +168,7 @@ SkPicturePlayback::SkPicturePlayback(const SkPictureRecord& record, #endif } +#ifdef SK_SUPPORT_LEGACY_PICTURE_CLONE SkPicturePlayback::SkPicturePlayback(const SkPicturePlayback& src, SkPictCopyInfo* deepCopyInfo) : fInfo(src.fInfo) { this->init(); @@ -223,6 +224,32 @@ SkPicturePlayback::SkPicturePlayback(const SkPicturePlayback& src, SkPictCopyInf } } } +#else +SkPicturePlayback::SkPicturePlayback(const SkPicturePlayback& src) : fInfo(src.fInfo) { + this->init(); + + fBitmapHeap.reset(SkSafeRef(src.fBitmapHeap.get())); + fPathHeap.reset(SkSafeRef(src.fPathHeap.get())); + + fOpData = SkSafeRef(src.fOpData); + + fBoundingHierarchy = src.fBoundingHierarchy; + fStateTree = src.fStateTree; + fContentInfo.set(src.fContentInfo); + + SkSafeRef(fBoundingHierarchy); + SkSafeRef(fStateTree); + + fBitmaps = SkSafeRef(src.fBitmaps); + fPaints = SkSafeRef(src.fPaints); + + fPictureCount = src.fPictureCount; + fPictureRefs = SkNEW_ARRAY(const SkPicture*, fPictureCount); + for (int i = 0; i < fPictureCount; i++) { + fPictureRefs[i] = SkRef(src.fPictureRefs[i]); + } +} +#endif//SK_SUPPORT_LEGACY_PICTURE_CLONE void SkPicturePlayback::init() { fBitmaps = NULL; |