OLD | NEW |
1 | 1 |
2 /* | 2 /* |
3 * Copyright 2011 Google Inc. | 3 * Copyright 2011 Google Inc. |
4 * | 4 * |
5 * Use of this source code is governed by a BSD-style license that can be | 5 * Use of this source code is governed by a BSD-style license that can be |
6 * found in the LICENSE file. | 6 * found in the LICENSE file. |
7 */ | 7 */ |
8 | 8 |
9 | 9 |
10 | 10 |
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
115 private: | 115 private: |
116 ReleaseProc fReleaseProc; | 116 ReleaseProc fReleaseProc; |
117 void* fReleaseProcContext; | 117 void* fReleaseProcContext; |
118 | 118 |
119 const void* fPtr; | 119 const void* fPtr; |
120 size_t fSize; | 120 size_t fSize; |
121 | 121 |
122 SkData(const void* ptr, size_t size, ReleaseProc, void* context); | 122 SkData(const void* ptr, size_t size, ReleaseProc, void* context); |
123 virtual ~SkData(); | 123 virtual ~SkData(); |
124 | 124 |
125 // This is here because SkAutoTUnref creates an internal helper class | |
126 // that derives from SkData (i.e., BlockRef) to prevent refs\unrefs. | |
127 // This helper class generates a compiler warning on Windows since the | |
128 // SkData's destructor is private. This friending gives the helper class | |
129 // access to the destructor. | |
130 friend class SkAutoTUnref<SkData>::BlockRef<SkData>; | |
131 | |
132 typedef SkFlattenable INHERITED; | 125 typedef SkFlattenable INHERITED; |
133 }; | 126 }; |
134 | 127 |
135 /** | 128 /** Typedef of SkAutoTUnref<SkData> for automatically unref-ing a SkData. */ |
136 * Specialized version of SkAutoTUnref<SkData> for automatically unref-ing a | 129 typedef SkAutoTUnref<SkData> SkAutoDataUnref; |
137 * SkData. | |
138 */ | |
139 class SkAutoDataUnref : SkNoncopyable { | |
140 public: | |
141 SkAutoDataUnref(SkData* data) : fRef(data) {} | |
142 ~SkAutoDataUnref() { | |
143 SkSafeUnref(fRef); | |
144 } | |
145 | |
146 SkData* get() const { return fRef; } | |
147 | |
148 void release() { | |
149 if (fRef) { | |
150 fRef->unref(); | |
151 fRef = NULL; | |
152 } | |
153 } | |
154 | |
155 SkData *operator->() const { return fRef; } | |
156 operator SkData*() { return fRef; } | |
157 | |
158 private: | |
159 SkData* fRef; | |
160 }; | |
161 | 130 |
162 #endif | 131 #endif |
OLD | NEW |