Index: src/lazy/SkDiscardableMemoryPool.h |
diff --git a/src/lazy/SkDiscardableMemoryPool.h b/src/lazy/SkDiscardableMemoryPool.h |
index 61bad701825aaa26279d22b4c9f75c7acabfb6a5..d141507004151360931df09b8622862dc480962b 100644 |
--- a/src/lazy/SkDiscardableMemoryPool.h |
+++ b/src/lazy/SkDiscardableMemoryPool.h |
@@ -9,60 +9,50 @@ |
#define SkDiscardableMemoryPool_DEFINED |
#include "SkDiscardableMemory.h" |
-#include "SkTInternalLList.h" |
-#include "SkThread.h" |
-class SkPoolDiscardableMemory; |
- |
-#ifdef SK_DEBUG |
- #define LAZY_CACHE_STATS 1 |
-#elif !defined(LAZY_CACHE_STATS) |
- #define LAZY_CACHE_STATS 0 |
+#ifndef SK_LAZY_CACHE_STATS |
+ #ifdef SK_DEBUG |
+ #define SK_LAZY_CACHE_STATS 1 |
+ #else |
+ #define SK_LAZY_CACHE_STATS 0 |
+ #endif |
#endif |
/** |
- * This non-global pool can be used for unit tests to verify that the |
- * pool works. |
+ * An implementation of Discardable Memory that manages a fixed-size |
+ * budget of memory. When the allocated memory exceeds this size, |
+ * unlocked blocks of memory are purged. If all memory is locked, it |
+ * can exceed the memory-use budget. |
*/ |
class SkDiscardableMemoryPool : public SkDiscardableMemory::Factory { |
public: |
- /** |
- * Without mutex, will be not be thread safe. |
- */ |
- SkDiscardableMemoryPool(size_t budget, SkBaseMutex* mutex = NULL); |
- virtual ~SkDiscardableMemoryPool(); |
+ virtual ~SkDiscardableMemoryPool() { } |
- virtual SkDiscardableMemory* create(size_t bytes) SK_OVERRIDE; |
- |
- size_t getRAMUsed(); |
- void setRAMBudget(size_t budget); |
+ virtual size_t getRAMUsed() = 0; |
+ virtual void setRAMBudget(size_t budget) = 0; |
+ virtual size_t getRAMBudget() = 0; |
/** purges all unlocked DMs */ |
- void dumpPool(); |
- |
- #if LAZY_CACHE_STATS |
- int fCacheHits; |
- int fCacheMisses; |
- #endif // LAZY_CACHE_STATS |
- |
-private: |
- SkBaseMutex* fMutex; |
- size_t fBudget; |
- size_t fUsed; |
- SkTInternalLList<SkPoolDiscardableMemory> fList; |
+ virtual void dumpPool() = 0; |
- /** Function called to free memory if needed */ |
- void dumpDownTo(size_t budget); |
- /** called by SkDiscardableMemoryPool upon destruction */ |
- void free(SkPoolDiscardableMemory* dm); |
- /** called by SkDiscardableMemoryPool::lock() */ |
- bool lock(SkPoolDiscardableMemory* dm); |
- /** called by SkDiscardableMemoryPool::unlock() */ |
- void unlock(SkPoolDiscardableMemory* dm); |
- |
- friend class SkPoolDiscardableMemory; |
+ #if SK_LAZY_CACHE_STATS |
+ /** |
+ * These two values are a count of the number of successful and |
+ * failed calls to SkDiscardableMemory::lock() for all DMs managed |
+ * by this pool. |
+ */ |
+ virtual int getCacheHits() = 0; |
+ virtual int getCacheMisses() = 0; |
+ virtual void resetCacheHitsAndMisses() = 0; |
+ #endif |
- typedef SkDiscardableMemory::Factory INHERITED; |
+ /** |
+ * This non-global pool can be used for unit tests to verify that |
+ * the pool works. |
+ * Without mutex, will be not be thread safe. |
+ */ |
+ static SkDiscardableMemoryPool* Create( |
+ size_t size, SkBaseMutex* mutex = NULL); |
}; |
/** |