| 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 |