Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(554)

Side by Side Diff: src/core/SkPicture.cpp

Issue 163053005: Cleanup unref and null (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 1
2 /* 2 /*
3 * Copyright 2007 The Android Open Source Project 3 * Copyright 2007 The Android Open Source Project
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 #include "SkPictureFlat.h" 10 #include "SkPictureFlat.h"
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after
157 } 157 }
158 158
159 void SkPicture::clone(SkPicture* pictures, int count) const { 159 void SkPicture::clone(SkPicture* pictures, int count) const {
160 SkPictCopyInfo copyInfo; 160 SkPictCopyInfo copyInfo;
161 161
162 for (int i = 0; i < count; i++) { 162 for (int i = 0; i < count; i++) {
163 SkPicture* clone = &pictures[i]; 163 SkPicture* clone = &pictures[i];
164 164
165 clone->fWidth = fWidth; 165 clone->fWidth = fWidth;
166 clone->fHeight = fHeight; 166 clone->fHeight = fHeight;
167 clone->fRecord = NULL; 167 SkSafeSetNull(clone->fRecord);
scroggo 2014/02/14 15:07:40 SkSafeSetNull seems like a bad name to me - it's n
168
169 if (NULL != clone->fRecord) {
170 clone->fRecord->unref();
171 clone->fRecord = NULL;
172 }
173 SkDELETE(clone->fPlayback); 168 SkDELETE(clone->fPlayback);
174 169
175 /* We want to copy the src's playback. However, if that hasn't been bui lt 170 /* We want to copy the src's playback. However, if that hasn't been bui lt
176 yet, we need to fake a call to endRecording() without actually calli ng 171 yet, we need to fake a call to endRecording() without actually calli ng
177 it (since it is destructive, and we don't want to change src). 172 it (since it is destructive, and we don't want to change src).
178 */ 173 */
179 if (fPlayback) { 174 if (fPlayback) {
180 clone->fPlayback = SkNEW_ARGS(SkPicturePlayback, (*fPlayback, &copyI nfo)); 175 clone->fPlayback = SkNEW_ARGS(SkPicturePlayback, (*fPlayback, &copyI nfo));
181 } else if (fRecord) { 176 } else if (fRecord) {
182 // here we do a fake src.endRecording() 177 // here we do a fake src.endRecording()
183 clone->fPlayback = SkNEW_ARGS(SkPicturePlayback, (*fRecord, true)); 178 clone->fPlayback = SkNEW_ARGS(SkPicturePlayback, (*fRecord, true));
184 } else { 179 } else {
185 clone->fPlayback = NULL; 180 clone->fPlayback = NULL;
186 } 181 }
187 } 182 }
188 } 183 }
189 184
190 /////////////////////////////////////////////////////////////////////////////// 185 ///////////////////////////////////////////////////////////////////////////////
191 186
192 SkCanvas* SkPicture::beginRecording(int width, int height, 187 SkCanvas* SkPicture::beginRecording(int width, int height,
193 uint32_t recordingFlags) { 188 uint32_t recordingFlags) {
194 if (fPlayback) { 189 if (fPlayback) {
195 SkDELETE(fPlayback); 190 SkDELETE(fPlayback);
196 fPlayback = NULL; 191 fPlayback = NULL;
197 } 192 }
198 193
199 if (NULL != fRecord) { 194 SkSafeSetNull(fRecord);
200 fRecord->unref();
201 fRecord = NULL;
202 }
203 195
204 SkBitmap bm; 196 SkBitmap bm;
205 bm.setConfig(SkBitmap::kNo_Config, width, height); 197 bm.setConfig(SkBitmap::kNo_Config, width, height);
206 SkAutoTUnref<SkBaseDevice> dev(SkNEW_ARGS(SkBitmapDevice, (bm))); 198 SkAutoTUnref<SkBaseDevice> dev(SkNEW_ARGS(SkBitmapDevice, (bm)));
207 199
208 // Must be set before calling createBBoxHierarchy 200 // Must be set before calling createBBoxHierarchy
209 fWidth = width; 201 fWidth = width;
210 fHeight = height; 202 fHeight = height;
211 203
212 if (recordingFlags & kOptimizeForClippedPlayback_RecordingFlag) { 204 if (recordingFlags & kOptimizeForClippedPlayback_RecordingFlag) {
(...skipping 26 matching lines...) Expand all
239 SkCanvas* SkPicture::getRecordingCanvas() const { 231 SkCanvas* SkPicture::getRecordingCanvas() const {
240 // will be null if we are not recording 232 // will be null if we are not recording
241 return fRecord; 233 return fRecord;
242 } 234 }
243 235
244 void SkPicture::endRecording() { 236 void SkPicture::endRecording() {
245 if (NULL == fPlayback) { 237 if (NULL == fPlayback) {
246 if (NULL != fRecord) { 238 if (NULL != fRecord) {
247 fRecord->endRecording(); 239 fRecord->endRecording();
248 fPlayback = SkNEW_ARGS(SkPicturePlayback, (*fRecord)); 240 fPlayback = SkNEW_ARGS(SkPicturePlayback, (*fRecord));
249 fRecord->unref(); 241 SkSafeSetNull(fRecord);
250 fRecord = NULL;
251 } 242 }
252 } 243 }
253 SkASSERT(NULL == fRecord); 244 SkASSERT(NULL == fRecord);
254 } 245 }
255 246
256 void SkPicture::draw(SkCanvas* surface, SkDrawPictureCallback* callback) { 247 void SkPicture::draw(SkCanvas* surface, SkDrawPictureCallback* callback) {
257 this->endRecording(); 248 this->endRecording();
258 if (fPlayback) { 249 if (fPlayback) {
259 fPlayback->draw(*surface, callback); 250 fPlayback->draw(*surface, callback);
260 } 251 }
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after
435 } 426 }
436 427
437 #ifdef SK_BUILD_FOR_ANDROID 428 #ifdef SK_BUILD_FOR_ANDROID
438 void SkPicture::abortPlayback() { 429 void SkPicture::abortPlayback() {
439 if (NULL == fPlayback) { 430 if (NULL == fPlayback) {
440 return; 431 return;
441 } 432 }
442 fPlayback->abort(); 433 fPlayback->abort();
443 } 434 }
444 #endif 435 #endif
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698