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

Unified Diff: src/core/SkResourceCache.h

Issue 569303002: Revert of Change SkResourceCache to take a Visitor inside its find(). (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 6 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/core/SkBitmapCache.cpp ('k') | src/core/SkResourceCache.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/core/SkResourceCache.h
diff --git a/src/core/SkResourceCache.h b/src/core/SkResourceCache.h
index d4e1dfa3766fb74a94181ef5ff01092283a84107..dacd62cedb914af54e07b7b805d7d6a9e243d970 100644
--- a/src/core/SkResourceCache.h
+++ b/src/core/SkResourceCache.h
@@ -60,7 +60,7 @@
struct Rec {
typedef SkResourceCache::Key Key;
- Rec() {}
+ Rec() : fLockCount(1) {}
virtual ~Rec() {}
uint32_t getHash() const { return this->getKey().hash(); }
@@ -75,23 +75,12 @@
private:
Rec* fNext;
Rec* fPrev;
+ int32_t fLockCount;
friend class SkResourceCache;
};
typedef const Rec* ID;
-
- /**
- * Callback function for find(). If called, the cache will have found a match for the
- * specified Key, and will pass in the corresponding Rec, along with a caller-specified
- * context. The function can read the data in Rec, and copy whatever it likes into context
- * (casting context to whatever it really is).
- *
- * The return value determines what the cache will do with the Rec. If the function returns
- * true, then the Rec is considered "valid". If false is returned, the Rec will be considered
- * "stale" and will be purged from the cache.
- */
- typedef bool (*VisitorProc)(const Rec&, void* context);
/**
* Returns a locked/pinned SkDiscardableMemory instance for the specified
@@ -104,17 +93,11 @@
* instance of this cache.
*/
- /**
- * Returns true if the visitor was called on a matching Key, and the visitor returned true.
- *
- * Find() will search the cache for the specified Key. If no match is found, return false and
- * do not call the VisitorProc. If a match is found, return whatever the visitor returns.
- * Its return value is interpreted to mean:
- * true : Rec is valid
- * false : Rec is "stale" -- the cache will purge it.
- */
- static bool Find(const Key& key, VisitorProc, void* context);
+ static const Rec* FindAndLock(const Key& key);
+ static const Rec* AddAndLock(Rec*);
static void Add(Rec*);
+ static void Unlock(ID);
+ static void Remove(ID);
static size_t GetTotalBytesUsed();
static size_t GetTotalByteLimit();
@@ -156,17 +139,18 @@
explicit SkResourceCache(size_t byteLimit);
~SkResourceCache();
- /**
- * Returns true if the visitor was called on a matching Key, and the visitor returned true.
- *
- * find() will search the cache for the specified Key. If no match is found, return false and
- * do not call the VisitorProc. If a match is found, return whatever the visitor returns.
- * Its return value is interpreted to mean:
- * true : Rec is valid
- * false : Rec is "stale" -- the cache will purge it.
- */
- bool find(const Key&, VisitorProc, void* context);
+ const Rec* findAndLock(const Key& key);
+ const Rec* addAndLock(Rec*);
void add(Rec*);
+ void remove(Rec*);
+
+ /**
+ * Given a non-null ID ptr returned by either findAndLock or addAndLock,
+ * this releases the associated resources to be available to be purged
+ * if needed. After this, the cached bitmap should no longer be
+ * referenced by the caller.
+ */
+ void unlock(ID);
size_t getTotalBytesUsed() const { return fTotalBytesUsed; }
size_t getTotalByteLimit() const { return fTotalByteLimit; }
@@ -218,7 +202,6 @@
void moveToHead(Rec*);
void addToHead(Rec*);
void detach(Rec*);
- void remove(Rec*);
void init(); // called by constructors
« no previous file with comments | « src/core/SkBitmapCache.cpp ('k') | src/core/SkResourceCache.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698