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

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

Issue 1316123003: Style Change: SkNEW->new; SkDELETE->delete (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: 2015-08-26 (Wednesday) 15:59:00 EDT Created 5 years, 3 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/SkBitmapFilter.cpp ('k') | src/core/SkBitmapProcShader.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 /* 2 /*
3 * Copyright 2012 Google Inc. 3 * Copyright 2012 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 #include "SkBitmapHeap.h" 9 #include "SkBitmapHeap.h"
10 #include "SkBitmap.h" 10 #include "SkBitmap.h"
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after
220 220
221 int SkBitmapHeap::findInLookupTable(const LookupEntry& indexEntry, SkBitmapHeapE ntry** entry) { 221 int SkBitmapHeap::findInLookupTable(const LookupEntry& indexEntry, SkBitmapHeapE ntry** entry) {
222 int index = SkTSearch<const LookupEntry, LookupEntry::Less>( 222 int index = SkTSearch<const LookupEntry, LookupEntry::Less>(
223 (const LookupEntry**)fLookupTable.b egin(), 223 (const LookupEntry**)fLookupTable.b egin(),
224 fLookupTable.count(), 224 fLookupTable.count(),
225 &indexEntry, sizeof(void*)); 225 &indexEntry, sizeof(void*));
226 226
227 if (index < 0) { 227 if (index < 0) {
228 // insert ourselves into the bitmapIndex 228 // insert ourselves into the bitmapIndex
229 index = ~index; 229 index = ~index;
230 *fLookupTable.insert(index) = SkNEW_ARGS(LookupEntry, (indexEntry)); 230 *fLookupTable.insert(index) = new LookupEntry(indexEntry);
231 } else if (entry != NULL) { 231 } else if (entry != NULL) {
232 // populate the entry if needed 232 // populate the entry if needed
233 *entry = fStorage[fLookupTable[index]->fStorageSlot]; 233 *entry = fStorage[fLookupTable[index]->fStorageSlot];
234 } 234 }
235 235
236 return index; 236 return index;
237 } 237 }
238 238
239 bool SkBitmapHeap::copyBitmap(const SkBitmap& originalBitmap, SkBitmap& copiedBi tmap) { 239 bool SkBitmapHeap::copyBitmap(const SkBitmap& originalBitmap, SkBitmap& copiedBi tmap) {
240 SkASSERT(!fExternalStorage); 240 SkASSERT(!fExternalStorage);
(...skipping 16 matching lines...) Expand all
257 } 257 }
258 258
259 int SkBitmapHeap::removeEntryFromLookupTable(LookupEntry* entry) { 259 int SkBitmapHeap::removeEntryFromLookupTable(LookupEntry* entry) {
260 // remove the bitmap index for the deleted entry 260 // remove the bitmap index for the deleted entry
261 SkDEBUGCODE(int count = fLookupTable.count();) 261 SkDEBUGCODE(int count = fLookupTable.count();)
262 int index = this->findInLookupTable(*entry, NULL); 262 int index = this->findInLookupTable(*entry, NULL);
263 // Verify that findInLookupTable found an existing entry rather than adding 263 // Verify that findInLookupTable found an existing entry rather than adding
264 // a new entry to the lookup table. 264 // a new entry to the lookup table.
265 SkASSERT(count == fLookupTable.count()); 265 SkASSERT(count == fLookupTable.count());
266 fBytesAllocated -= fStorage[entry->fStorageSlot]->fBytesAllocated; 266 fBytesAllocated -= fStorage[entry->fStorageSlot]->fBytesAllocated;
267 SkDELETE(fLookupTable[index]); 267 delete fLookupTable[index];
268 fLookupTable.remove(index); 268 fLookupTable.remove(index);
269 return index; 269 return index;
270 } 270 }
271 271
272 int32_t SkBitmapHeap::insert(const SkBitmap& originalBitmap) { 272 int32_t SkBitmapHeap::insert(const SkBitmap& originalBitmap) {
273 SkBitmapHeapEntry* entry = NULL; 273 SkBitmapHeapEntry* entry = NULL;
274 int searchIndex = this->findInLookupTable(LookupEntry(originalBitmap), &entr y); 274 int searchIndex = this->findInLookupTable(LookupEntry(originalBitmap), &entr y);
275 275
276 if (entry) { 276 if (entry) {
277 // Already had a copy of the bitmap in the heap. 277 // Already had a copy of the bitmap in the heap.
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
310 } 310 }
311 } 311 }
312 312
313 // if we didn't have an entry yet we need to create one 313 // if we didn't have an entry yet we need to create one
314 if (!entry) { 314 if (!entry) {
315 if (fPreferredCount != UNLIMITED_SIZE && fUnusedSlots.count() > 0) { 315 if (fPreferredCount != UNLIMITED_SIZE && fUnusedSlots.count() > 0) {
316 int slot; 316 int slot;
317 fUnusedSlots.pop(&slot); 317 fUnusedSlots.pop(&slot);
318 entry = fStorage[slot]; 318 entry = fStorage[slot];
319 } else { 319 } else {
320 entry = SkNEW(SkBitmapHeapEntry); 320 entry = new SkBitmapHeapEntry;
321 fStorage.append(1, &entry); 321 fStorage.append(1, &entry);
322 entry->fSlot = fStorage.count() - 1; 322 entry->fSlot = fStorage.count() - 1;
323 fBytesAllocated += sizeof(SkBitmapHeapEntry); 323 fBytesAllocated += sizeof(SkBitmapHeapEntry);
324 } 324 }
325 } 325 }
326 326
327 // create a copy of the bitmap 327 // create a copy of the bitmap
328 bool copySucceeded; 328 bool copySucceeded;
329 if (fExternalStorage) { 329 if (fExternalStorage) {
330 copySucceeded = fExternalStorage->insert(originalBitmap, entry->fSlot); 330 copySucceeded = fExternalStorage->insert(originalBitmap, entry->fSlot);
331 } else { 331 } else {
332 copySucceeded = copyBitmap(originalBitmap, entry->fBitmap); 332 copySucceeded = copyBitmap(originalBitmap, entry->fBitmap);
333 } 333 }
334 334
335 // if the copy failed then we must abort 335 // if the copy failed then we must abort
336 if (!copySucceeded) { 336 if (!copySucceeded) {
337 // delete the index 337 // delete the index
338 SkDELETE(fLookupTable[searchIndex]); 338 delete fLookupTable[searchIndex];
339 fLookupTable.remove(searchIndex); 339 fLookupTable.remove(searchIndex);
340 // If entry is the last slot in storage, it is safe to delete it. 340 // If entry is the last slot in storage, it is safe to delete it.
341 if (fStorage.count() - 1 == entry->fSlot) { 341 if (fStorage.count() - 1 == entry->fSlot) {
342 // free the slot 342 // free the slot
343 fStorage.remove(entry->fSlot); 343 fStorage.remove(entry->fSlot);
344 fBytesAllocated -= sizeof(SkBitmapHeapEntry); 344 fBytesAllocated -= sizeof(SkBitmapHeapEntry);
345 SkDELETE(entry); 345 delete entry;
346 } else { 346 } else {
347 fUnusedSlots.push(entry->fSlot); 347 fUnusedSlots.push(entry->fSlot);
348 } 348 }
349 return INVALID_SLOT; 349 return INVALID_SLOT;
350 } 350 }
351 351
352 // update the index with the appropriate slot in the heap 352 // update the index with the appropriate slot in the heap
353 fLookupTable[searchIndex]->fStorageSlot = entry->fSlot; 353 fLookupTable[searchIndex]->fStorageSlot = entry->fSlot;
354 354
355 // compute the space taken by this entry 355 // compute the space taken by this entry
(...skipping 27 matching lines...) Expand all
383 for (int i = 0; i < fDeferredEntries.count(); i++) { 383 for (int i = 0; i < fDeferredEntries.count(); i++) {
384 SkASSERT(fOwnerCount != IGNORE_OWNERS); 384 SkASSERT(fOwnerCount != IGNORE_OWNERS);
385 SkBitmapHeapEntry* heapEntry = this->getEntry(fDeferredEntries[i]); 385 SkBitmapHeapEntry* heapEntry = this->getEntry(fDeferredEntries[i]);
386 SkASSERT(heapEntry != NULL); 386 SkASSERT(heapEntry != NULL);
387 heapEntry->addReferences(fOwnerCount); 387 heapEntry->addReferences(fOwnerCount);
388 } 388 }
389 } 389 }
390 fDeferAddingOwners = false; 390 fDeferAddingOwners = false;
391 fDeferredEntries.reset(); 391 fDeferredEntries.reset();
392 } 392 }
OLDNEW
« no previous file with comments | « src/core/SkBitmapFilter.cpp ('k') | src/core/SkBitmapProcShader.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698