| Index: src/core/SkResourceCache.cpp
|
| diff --git a/src/core/SkResourceCache.cpp b/src/core/SkResourceCache.cpp
|
| index ae8412d8b47a323ecd7f5e2f6508629d8d6abcb4..bb159fe1e4baee9f88f1560cc0eaf13852bde9c2 100644
|
| --- a/src/core/SkResourceCache.cpp
|
| +++ b/src/core/SkResourceCache.cpp
|
| @@ -294,6 +294,19 @@ void SkResourceCache::purgeAsNeeded(bool forcePurge) {
|
| }
|
| }
|
|
|
| +void SkResourceCache::purgeVisitor(const void* nameSpace, VisitorProc proc, void* context) {
|
| + // go backwards, just like purgeAsNeeded, just to make the code similar.
|
| + // could iterate either direction and still be correct.
|
| + Rec* rec = fTail;
|
| + while (rec) {
|
| + Rec* prev = rec->fPrev;
|
| + if (rec->getKey().getNamespace() == nameSpace && !proc(*rec, context)) {
|
| + this->remove(rec);
|
| + }
|
| + rec = prev;
|
| + }
|
| +}
|
| +
|
| size_t SkResourceCache::setTotalByteLimit(size_t newLimit) {
|
| size_t prevLimit = fTotalByteLimit;
|
| fTotalByteLimit = newLimit;
|
| @@ -511,6 +524,11 @@ size_t SkResourceCache::GetSingleAllocationByteLimit() {
|
| return get_cache()->getSingleAllocationByteLimit();
|
| }
|
|
|
| +void SkResourceCache::PurgeVisitor(const void* nameSpace, VisitorProc proc, void* context) {
|
| + SkAutoMutexAcquire am(gMutex);
|
| + return get_cache()->purgeVisitor(nameSpace, proc, context);
|
| +}
|
| +
|
| void SkResourceCache::PurgeAll() {
|
| SkAutoMutexAcquire am(gMutex);
|
| return get_cache()->purgeAll();
|
|
|