| Index: src/core/SkGlyphCache_Globals.h
|
| diff --git a/src/core/SkGlyphCache_Globals.h b/src/core/SkGlyphCache_Globals.h
|
| index e1825a2f0f90d935a8c5d90637c373d293b07d2b..a0069e143396922198658cd0808ec4fe61bc340a 100644
|
| --- a/src/core/SkGlyphCache_Globals.h
|
| +++ b/src/core/SkGlyphCache_Globals.h
|
| @@ -26,8 +26,9 @@
|
| class SkGlyphCache_Globals {
|
| public:
|
| SkGlyphCache_Globals() {
|
| +
|
| fHead = nullptr;
|
| - fTotalMemoryUsed = 0;
|
| + fTotalMemoryUsed.store(0);
|
| fCacheSizeLimit = SK_DEFAULT_FONT_CACHE_LIMIT;
|
| fCacheCount = 0;
|
| fCacheCountLimit = SK_DEFAULT_FONT_CACHE_COUNT_LIMIT;
|
| @@ -47,7 +48,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 +68,7 @@ public:
|
| // or count limit.
|
| bool isOverBudget() const {
|
| return fCacheCount > fCacheCountLimit ||
|
| - fTotalMemoryUsed > fCacheSizeLimit;
|
| + fTotalMemoryUsed.load() > fCacheSizeLimit;
|
| }
|
|
|
| void purgeAll(); // does not change budget
|
| @@ -75,20 +77,21 @@ public:
|
| void attachCacheToHead(SkGlyphCache*);
|
|
|
| // can only be called when the mutex is already held
|
| - void internalDetachCache(SkGlyphCache*);
|
| - void internalAttachCacheToHead(SkGlyphCache*);
|
| -
|
| -private:
|
| - SkGlyphCache* fHead;
|
| - size_t fTotalMemoryUsed;
|
| - size_t fCacheSizeLimit;
|
| - int32_t fCacheCountLimit;
|
| - int32_t fCacheCount;
|
| + 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;
|
| + SkAtomic<size_t> fTotalMemoryUsed;
|
| + size_t fCacheSizeLimit;
|
| + int32_t fCacheCountLimit;
|
| + int32_t fCacheCount;
|
| +
|
| };
|
|
|
| #endif
|
|
|