diff options
author | 2018-07-10 16:26:34 -0400 | |
---|---|---|
committer | 2018-07-10 21:33:25 +0000 | |
commit | 02ca49fc466bc54831c3a8f03b1b3c6ab6bba498 (patch) | |
tree | 39a8d5d4209b89d61bbc1fcca77b631c27fea536 | |
parent | 351f4daca4f36edc5b8622a5ab646e7c509e6751 (diff) |
Move SkWriteBuffer to smart pointers.
The fields fFactorySet and fTFSet and their setting member functions are
changed to use smart pointers instead of manually handling the reference
counting.
Change-Id: I7d8e9f3dff5a7b4770959c5cc143a3ac7289d108
Reviewed-on: https://skia-review.googlesource.com/140348
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
-rw-r--r-- | src/core/SkPictureData.cpp | 4 | ||||
-rw-r--r-- | src/core/SkWriteBuffer.cpp | 19 | ||||
-rw-r--r-- | src/core/SkWriteBuffer.h | 10 |
3 files changed, 14 insertions, 19 deletions
diff --git a/src/core/SkPictureData.cpp b/src/core/SkPictureData.cpp index 7699cdab20..92234f9ce9 100644 --- a/src/core/SkPictureData.cpp +++ b/src/core/SkPictureData.cpp @@ -189,9 +189,9 @@ void SkPictureData::serialize(SkWStream* stream, const SkSerialProcs& procs, // factories and typefaces by first serializing to an in-memory write buffer. SkFactorySet factSet; // buffer refs factSet, so factSet must come first. SkBinaryWriteBuffer buffer; - buffer.setFactoryRecorder(&factSet); + buffer.setFactoryRecorder(sk_ref_sp(&factSet)); buffer.setSerialProcs(procs); - buffer.setTypefaceRecorder(typefaceSet); + buffer.setTypefaceRecorder(sk_ref_sp(typefaceSet)); this->flattenToBuffer(buffer); // Dummy serialize our sub-pictures for the side effect of filling diff --git a/src/core/SkWriteBuffer.cpp b/src/core/SkWriteBuffer.cpp index a40e9abaa8..8300f61d4b 100644 --- a/src/core/SkWriteBuffer.cpp +++ b/src/core/SkWriteBuffer.cpp @@ -27,14 +27,11 @@ SkBinaryWriteBuffer::SkBinaryWriteBuffer() SkBinaryWriteBuffer::SkBinaryWriteBuffer(void* storage, size_t storageSize) : fFactorySet(nullptr) + , fTFSet(nullptr) , fWriter(storage, storageSize) - , fTFSet(nullptr) { -} +{} -SkBinaryWriteBuffer::~SkBinaryWriteBuffer() { - SkSafeUnref(fFactorySet); - SkSafeUnref(fTFSet); -} +SkBinaryWriteBuffer::~SkBinaryWriteBuffer() {} bool SkBinaryWriteBuffer::usingInitialStorage() const { return fWriter.usingInitialStorage(); @@ -204,14 +201,12 @@ void SkBinaryWriteBuffer::writePaint(const SkPaint& paint) { SkPaintPriv::Flatten(paint, *this); } -SkFactorySet* SkBinaryWriteBuffer::setFactoryRecorder(SkFactorySet* rec) { - SkRefCnt_SafeAssign(fFactorySet, rec); - return rec; +void SkBinaryWriteBuffer::setFactoryRecorder(sk_sp<SkFactorySet> rec) { + fFactorySet = std::move(rec); } -SkRefCntSet* SkBinaryWriteBuffer::setTypefaceRecorder(SkRefCntSet* rec) { - SkRefCnt_SafeAssign(fTFSet, rec); - return rec; +void SkBinaryWriteBuffer::setTypefaceRecorder(sk_sp<SkRefCntSet> rec) { + fTFSet = std::move(rec); } void SkBinaryWriteBuffer::writeFlattenable(const SkFlattenable* flattenable) { diff --git a/src/core/SkWriteBuffer.h b/src/core/SkWriteBuffer.h index 7be1794c2d..011977ca19 100644 --- a/src/core/SkWriteBuffer.h +++ b/src/core/SkWriteBuffer.h @@ -125,14 +125,14 @@ public: bool writeToStream(SkWStream*); void writeToMemory(void* dst) { fWriter.flatten(dst); } - SkFactorySet* setFactoryRecorder(SkFactorySet*); - SkRefCntSet* setTypefaceRecorder(SkRefCntSet*); + void setFactoryRecorder(sk_sp<SkFactorySet>); + void setTypefaceRecorder(sk_sp<SkRefCntSet>); private: - SkFactorySet* fFactorySet; - SkWriter32 fWriter; + sk_sp<SkFactorySet> fFactorySet; + sk_sp<SkRefCntSet> fTFSet; - SkRefCntSet* fTFSet; + SkWriter32 fWriter; // Only used if we do not have an fFactorySet SkTHashMap<SkString, uint32_t> fFlattenableDict; |