OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2013 Google Inc. | 2 * Copyright 2013 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 | 7 |
8 #include "SkChecksum.h" | 8 #include "SkChecksum.h" |
9 #include "SkMessageBus.h" | 9 #include "SkMessageBus.h" |
10 #include "SkMipMap.h" | 10 #include "SkMipMap.h" |
(...skipping 261 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
272 } | 272 } |
273 | 273 |
274 // since the new rec may push us over-budget, we perform a purge check now | 274 // since the new rec may push us over-budget, we perform a purge check now |
275 this->purgeAsNeeded(); | 275 this->purgeAsNeeded(); |
276 } | 276 } |
277 | 277 |
278 void SkResourceCache::remove(Rec* rec) { | 278 void SkResourceCache::remove(Rec* rec) { |
279 size_t used = rec->bytesUsed(); | 279 size_t used = rec->bytesUsed(); |
280 SkASSERT(used <= fTotalBytesUsed); | 280 SkASSERT(used <= fTotalBytesUsed); |
281 | 281 |
282 this->detach(rec); | 282 this->release(rec); |
283 fHash->remove(rec->getKey()); | 283 fHash->remove(rec->getKey()); |
284 | 284 |
285 fTotalBytesUsed -= used; | 285 fTotalBytesUsed -= used; |
286 fCount -= 1; | 286 fCount -= 1; |
287 | 287 |
288 if (gDumpCacheTransactions) { | 288 if (gDumpCacheTransactions) { |
289 SkString bytesStr, totalStr; | 289 SkString bytesStr, totalStr; |
290 make_size_str(used, &bytesStr); | 290 make_size_str(used, &bytesStr); |
291 make_size_str(fTotalBytesUsed, &totalStr); | 291 make_size_str(fTotalBytesUsed, &totalStr); |
292 SkDebugf("RC: remove %5s %12p key %08x -- total %5s, count %d\n", | 292 SkDebugf("RC: remove %5s %12p key %08x -- total %5s, count %d\n", |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
388 if (fDiscardableFactory) { | 388 if (fDiscardableFactory) { |
389 SkDiscardableMemory* dm = fDiscardableFactory(bytes); | 389 SkDiscardableMemory* dm = fDiscardableFactory(bytes); |
390 return dm ? new SkCachedData(bytes, dm) : nullptr; | 390 return dm ? new SkCachedData(bytes, dm) : nullptr; |
391 } else { | 391 } else { |
392 return new SkCachedData(sk_malloc_throw(bytes), bytes); | 392 return new SkCachedData(sk_malloc_throw(bytes), bytes); |
393 } | 393 } |
394 } | 394 } |
395 | 395 |
396 /////////////////////////////////////////////////////////////////////////////// | 396 /////////////////////////////////////////////////////////////////////////////// |
397 | 397 |
398 void SkResourceCache::detach(Rec* rec) { | 398 void SkResourceCache::release(Rec* rec) { |
399 Rec* prev = rec->fPrev; | 399 Rec* prev = rec->fPrev; |
400 Rec* next = rec->fNext; | 400 Rec* next = rec->fNext; |
401 | 401 |
402 if (!prev) { | 402 if (!prev) { |
403 SkASSERT(fHead == rec); | 403 SkASSERT(fHead == rec); |
404 fHead = next; | 404 fHead = next; |
405 } else { | 405 } else { |
406 prev->fNext = next; | 406 prev->fNext = next; |
407 } | 407 } |
408 | 408 |
409 if (!next) { | 409 if (!next) { |
410 fTail = prev; | 410 fTail = prev; |
411 } else { | 411 } else { |
412 next->fPrev = prev; | 412 next->fPrev = prev; |
413 } | 413 } |
414 | 414 |
415 rec->fNext = rec->fPrev = nullptr; | 415 rec->fNext = rec->fPrev = nullptr; |
416 } | 416 } |
417 | 417 |
418 void SkResourceCache::moveToHead(Rec* rec) { | 418 void SkResourceCache::moveToHead(Rec* rec) { |
419 if (fHead == rec) { | 419 if (fHead == rec) { |
420 return; | 420 return; |
421 } | 421 } |
422 | 422 |
423 SkASSERT(fHead); | 423 SkASSERT(fHead); |
424 SkASSERT(fTail); | 424 SkASSERT(fTail); |
425 | 425 |
426 this->validate(); | 426 this->validate(); |
427 | 427 |
428 this->detach(rec); | 428 this->release(rec); |
429 | 429 |
430 fHead->fPrev = rec; | 430 fHead->fPrev = rec; |
431 rec->fNext = fHead; | 431 rec->fNext = fHead; |
432 fHead = rec; | 432 fHead = rec; |
433 | 433 |
434 this->validate(); | 434 this->validate(); |
435 } | 435 } |
436 | 436 |
437 void SkResourceCache::addToHead(Rec* rec) { | 437 void SkResourceCache::addToHead(Rec* rec) { |
438 this->validate(); | 438 this->validate(); |
(...skipping 261 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
700 dump->dumpNumericValue(dumpName.c_str(), "size", "bytes", rec.bytesUsed(
)); | 700 dump->dumpNumericValue(dumpName.c_str(), "size", "bytes", rec.bytesUsed(
)); |
701 dump->setMemoryBacking(dumpName.c_str(), "malloc", nullptr); | 701 dump->setMemoryBacking(dumpName.c_str(), "malloc", nullptr); |
702 } | 702 } |
703 } | 703 } |
704 | 704 |
705 void SkResourceCache::DumpMemoryStatistics(SkTraceMemoryDump* dump) { | 705 void SkResourceCache::DumpMemoryStatistics(SkTraceMemoryDump* dump) { |
706 // Since resource could be backed by malloc or discardable, the cache always
dumps detailed | 706 // Since resource could be backed by malloc or discardable, the cache always
dumps detailed |
707 // stats to be accurate. | 707 // stats to be accurate. |
708 VisitAll(sk_trace_dump_visitor, dump); | 708 VisitAll(sk_trace_dump_visitor, dump); |
709 } | 709 } |
OLD | NEW |