| Index: src/core/SkGlyphCache_Globals.h
|
| diff --git a/src/core/SkGlyphCache_Globals.h b/src/core/SkGlyphCache_Globals.h
|
| index 8e0ceb55c4a0939bb3f151b89e03fa12cbc7b629..c3fbb0126dde01cc804170eb32ea05600f10a250 100644
|
| --- a/src/core/SkGlyphCache_Globals.h
|
| +++ b/src/core/SkGlyphCache_Globals.h
|
| @@ -27,7 +27,7 @@ class SkGlyphCache_Globals {
|
| public:
|
| SkGlyphCache_Globals() {
|
| fHead = NULL;
|
| - fTotalMemoryUsed = 0;
|
| + fTotalMemoryUsed.store(0);
|
| fCacheSizeLimit = SK_DEFAULT_FONT_CACHE_LIMIT;
|
| fCacheCount = 0;
|
| fCacheCountLimit = SK_DEFAULT_FONT_CACHE_COUNT_LIMIT;
|
| @@ -47,7 +47,8 @@ public:
|
| SkGlyphCache* internalGetHead() const { return fHead; }
|
| SkGlyphCache* internalGetTail() const;
|
|
|
| - size_t getTotalMemoryUsed() const { return fTotalMemoryUsed; }
|
| + size_t getTotalMemoryUsed() const { return fTotalMemoryUsed.load(); }
|
| + void increaseTotalMemoryUsed(size_t increase) { fTotalMemoryUsed.fetch_add(increase);}
|
| int getCacheCountUsed() const { return fCacheCount; }
|
|
|
| #ifdef SK_DEBUG
|
| @@ -66,7 +67,7 @@ public:
|
| // or count limit.
|
| bool isOverBudget() const {
|
| return fCacheCount > fCacheCountLimit ||
|
| - fTotalMemoryUsed > fCacheSizeLimit;
|
| + fTotalMemoryUsed.load() > fCacheSizeLimit;
|
| }
|
|
|
| void purgeAll(); // does not change budget
|
| @@ -75,20 +76,21 @@ public:
|
| void attachCacheToHead(SkGlyphCache*);
|
|
|
| // can only be called when the mutex is already held
|
| - void internalDetachCache(SkGlyphCache*);
|
| - void internalAttachCacheToHead(SkGlyphCache*);
|
| + //void internalDetachCache(SkGlyphCache*);
|
| + void internalMoveToHead(SkGlyphCache *);
|
| + // Checkout budgets, modulated by the specified min-bytes-needed-to-purge,
|
| + // and attempt to purge caches to match.
|
| + // Returns number of bytes freed.
|
| + void internalDetachCache(SkGlyphCache* cache);
|
| + size_t internalPurge(size_t minBytesNeeded = 0);
|
|
|
| private:
|
| SkGlyphCache* fHead;
|
| - size_t fTotalMemoryUsed;
|
| + SkAtomic<size_t> fTotalMemoryUsed;
|
| size_t fCacheSizeLimit;
|
| int32_t fCacheCountLimit;
|
| int32_t fCacheCount;
|
|
|
| - // Checkout budgets, modulated by the specified min-bytes-needed-to-purge,
|
| - // and attempt to purge caches to match.
|
| - // Returns number of bytes freed.
|
| - size_t internalPurge(size_t minBytesNeeded = 0);
|
| };
|
|
|
| #endif
|
|
|