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

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

Issue 1779263003: Make sp variants for SkData (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 4 years, 9 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 | « src/core/SkPictureData.h ('k') | src/core/SkPicturePlayback.cpp » ('j') | 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 * Copyright 2011 Google Inc. 2 * Copyright 2011 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 #include <new> 7 #include <new>
8 #include "SkImageGenerator.h" 8 #include "SkImageGenerator.h"
9 #include "SkPictureData.h" 9 #include "SkPictureData.h"
10 #include "SkPictureRecord.h" 10 #include "SkPictureRecord.h"
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
86 } 86 }
87 } 87 }
88 88
89 void SkPictureData::init() { 89 void SkPictureData::init() {
90 fPictureRefs = nullptr; 90 fPictureRefs = nullptr;
91 fPictureCount = 0; 91 fPictureCount = 0;
92 fTextBlobRefs = nullptr; 92 fTextBlobRefs = nullptr;
93 fTextBlobCount = 0; 93 fTextBlobCount = 0;
94 fImageRefs = nullptr; 94 fImageRefs = nullptr;
95 fImageCount = 0; 95 fImageCount = 0;
96 fOpData = nullptr;
97 fFactoryPlayback = nullptr; 96 fFactoryPlayback = nullptr;
98 } 97 }
99 98
100 SkPictureData::~SkPictureData() { 99 SkPictureData::~SkPictureData() {
101 SkSafeUnref(fOpData);
102
103 for (int i = 0; i < fPictureCount; i++) { 100 for (int i = 0; i < fPictureCount; i++) {
104 fPictureRefs[i]->unref(); 101 fPictureRefs[i]->unref();
105 } 102 }
106 delete[] fPictureRefs; 103 delete[] fPictureRefs;
107 104
108 for (int i = 0; i < fTextBlobCount; i++) { 105 for (int i = 0; i < fTextBlobCount; i++) {
109 fTextBlobRefs[i]->unref(); 106 fTextBlobRefs[i]->unref();
110 } 107 }
111 delete[] fTextBlobRefs; 108 delete[] fTextBlobRefs;
112 109
(...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after
351 * 348 *
352 * We assert that if/when we see either of these, that we have not yet seen 349 * We assert that if/when we see either of these, that we have not yet seen
353 * the buffer tag, because if we have, then its too-late to deal with the 350 * the buffer tag, because if we have, then its too-late to deal with the
354 * factories or typefaces. 351 * factories or typefaces.
355 */ 352 */
356 SkDEBUGCODE(bool haveBuffer = false;) 353 SkDEBUGCODE(bool haveBuffer = false;)
357 354
358 switch (tag) { 355 switch (tag) {
359 case SK_PICT_READER_TAG: 356 case SK_PICT_READER_TAG:
360 SkASSERT(nullptr == fOpData); 357 SkASSERT(nullptr == fOpData);
361 fOpData = SkData::NewFromStream(stream, size); 358 fOpData = SkData::MakeFromStream(stream, size);
362 if (!fOpData) { 359 if (!fOpData) {
363 return false; 360 return false;
364 } 361 }
365 break; 362 break;
366 case SK_PICT_FACTORY_TAG: { 363 case SK_PICT_FACTORY_TAG: {
367 SkASSERT(!haveBuffer); 364 SkASSERT(!haveBuffer);
368 size = stream->readU32(); 365 size = stream->readU32();
369 fFactoryPlayback = new SkFactoryPlayback(size); 366 fFactoryPlayback = new SkFactoryPlayback(size);
370 for (size_t i = 0; i < size; i++) { 367 for (size_t i = 0; i < size; i++) {
371 SkString str; 368 SkString str;
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
522 return false; 519 return false;
523 } 520 }
524 break; 521 break;
525 case SK_PICT_IMAGE_BUFFER_TAG: 522 case SK_PICT_IMAGE_BUFFER_TAG:
526 if (!new_array_from_buffer(buffer, size, &fImageRefs, &fImageCount, 523 if (!new_array_from_buffer(buffer, size, &fImageRefs, &fImageCount,
527 create_image_from_buffer)) { 524 create_image_from_buffer)) {
528 return false; 525 return false;
529 } 526 }
530 break; 527 break;
531 case SK_PICT_READER_TAG: { 528 case SK_PICT_READER_TAG: {
532 SkAutoDataUnref data(SkData::NewUninitialized(size)); 529 auto data(SkData::MakeUninitialized(size));
533 if (!buffer.readByteArray(data->writable_data(), size) || 530 if (!buffer.readByteArray(data->writable_data(), size) ||
534 !buffer.validate(nullptr == fOpData)) { 531 !buffer.validate(nullptr == fOpData)) {
535 return false; 532 return false;
536 } 533 }
537 SkASSERT(nullptr == fOpData); 534 SkASSERT(nullptr == fOpData);
538 fOpData = data.detach(); 535 fOpData = std::move(data);
539 } break; 536 } break;
540 case SK_PICT_PICTURE_TAG: 537 case SK_PICT_PICTURE_TAG:
541 if (!new_array_from_buffer(buffer, size, &fPictureRefs, &fPictureCou nt, 538 if (!new_array_from_buffer(buffer, size, &fPictureRefs, &fPictureCou nt,
542 create_picture_from_buffer)) { 539 create_picture_from_buffer)) {
543 return false; 540 return false;
544 } 541 }
545 break; 542 break;
546 default: 543 default:
547 // The tag was invalid. 544 // The tag was invalid.
548 return false; 545 return false;
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
628 } 625 }
629 } 626 }
630 627
631 bool SkPictureData::suitableForLayerOptimization() const { 628 bool SkPictureData::suitableForLayerOptimization() const {
632 return fContentInfo.numLayers() > 0; 629 return fContentInfo.numLayers() > 0;
633 } 630 }
634 #endif 631 #endif
635 /////////////////////////////////////////////////////////////////////////////// 632 ///////////////////////////////////////////////////////////////////////////////
636 633
637 634
OLDNEW
« no previous file with comments | « src/core/SkPictureData.h ('k') | src/core/SkPicturePlayback.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698