diff options
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/SkResourceCache.cpp | 22 | ||||
-rw-r--r-- | src/core/SkResourceCache.h | 4 |
2 files changed, 15 insertions, 11 deletions
diff --git a/src/core/SkResourceCache.cpp b/src/core/SkResourceCache.cpp index 47d9f6a48f..e7c2f94bd5 100644 --- a/src/core/SkResourceCache.cpp +++ b/src/core/SkResourceCache.cpp @@ -51,10 +51,19 @@ void SkResourceCache::Key::init(void* nameSpace, uint64_t sharedID, size_t dataS (fCount32 - kUnhashedLocal32s) << 2); } -#include "SkTDynamicHash.h" +#include "SkTHash.h" + +namespace { + struct HashTraits { + static uint32_t Hash(const SkResourceCache::Key& key) { return key.hash(); } + static const SkResourceCache::Key& GetKey(const SkResourceCache::Rec* rec) { + return rec->getKey(); + } + }; +} class SkResourceCache::Hash : - public SkTDynamicHash<SkResourceCache::Rec, SkResourceCache::Key> {}; + public SkTHashTable<SkResourceCache::Rec*, SkResourceCache::Key, HashTraits> {}; /////////////////////////////////////////////////////////////////////////////// @@ -224,8 +233,8 @@ SkResourceCache::~SkResourceCache() { bool SkResourceCache::find(const Key& key, FindVisitor visitor, void* context) { this->checkMessages(); - Rec* rec = fHash->find(key); - if (rec) { + if (auto found = fHash->find(key)) { + Rec* rec = *found; if (visitor(*rec, context)) { this->moveToHead(rec); // for our LRU return true; @@ -254,14 +263,13 @@ void SkResourceCache::add(Rec* rec) { SkASSERT(rec); // See if we already have this key (racy inserts, etc.) - Rec* existing = fHash->find(rec->getKey()); - if (existing) { + if (nullptr != fHash->find(rec->getKey())) { delete rec; return; } this->addToHead(rec); - fHash->add(rec); + fHash->set(rec); if (gDumpCacheTransactions) { SkString bytesStr, totalStr; diff --git a/src/core/SkResourceCache.h b/src/core/SkResourceCache.h index 5919336312..0ff627196e 100644 --- a/src/core/SkResourceCache.h +++ b/src/core/SkResourceCache.h @@ -86,10 +86,6 @@ public: virtual const char* getCategory() const = 0; virtual SkDiscardableMemory* diagnostic_only_getDiscardable() const { return nullptr; } - // for SkTDynamicHash::Traits - static uint32_t Hash(const Key& key) { return key.hash(); } - static const Key& GetKey(const Rec& rec) { return rec.getKey(); } - private: Rec* fNext; Rec* fPrev; |