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

Side by Side Diff: src/lazy/SkDiscardableMemoryPool.cpp

Issue 1945343003: Revert of Modernize SkMutex and SkSemaphore. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 4 years, 7 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 unified diff | Download patch
« no previous file with comments | « src/lazy/SkDiscardableMemoryPool.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2013 Google Inc. 2 * Copyright 2013 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #include "SkDiscardableMemory.h" 8 #include "SkDiscardableMemory.h"
9 #include "SkDiscardableMemoryPool.h" 9 #include "SkDiscardableMemoryPool.h"
10 #include "SkImageGenerator.h" 10 #include "SkImageGenerator.h"
(...skipping 11 matching lines...) Expand all
22 22
23 /** 23 /**
24 * This non-global pool can be used for unit tests to verify that the 24 * This non-global pool can be used for unit tests to verify that the
25 * pool works. 25 * pool works.
26 */ 26 */
27 class DiscardableMemoryPool : public SkDiscardableMemoryPool { 27 class DiscardableMemoryPool : public SkDiscardableMemoryPool {
28 public: 28 public:
29 /** 29 /**
30 * Without mutex, will be not be thread safe. 30 * Without mutex, will be not be thread safe.
31 */ 31 */
32 DiscardableMemoryPool(size_t budget, SkMutex* mutex = nullptr); 32 DiscardableMemoryPool(size_t budget, SkBaseMutex* mutex = nullptr);
33 virtual ~DiscardableMemoryPool(); 33 virtual ~DiscardableMemoryPool();
34 34
35 SkDiscardableMemory* create(size_t bytes) override; 35 SkDiscardableMemory* create(size_t bytes) override;
36 36
37 size_t getRAMUsed() override; 37 size_t getRAMUsed() override;
38 void setRAMBudget(size_t budget) override; 38 void setRAMBudget(size_t budget) override;
39 size_t getRAMBudget() override { return fBudget; } 39 size_t getRAMBudget() override { return fBudget; }
40 40
41 /** purges all unlocked DMs */ 41 /** purges all unlocked DMs */
42 void dumpPool() override; 42 void dumpPool() override;
43 43
44 #if SK_LAZY_CACHE_STATS // Defined in SkDiscardableMemoryPool.h 44 #if SK_LAZY_CACHE_STATS // Defined in SkDiscardableMemoryPool.h
45 int getCacheHits() override { return fCacheHits; } 45 int getCacheHits() override { return fCacheHits; }
46 int getCacheMisses() override { return fCacheMisses; } 46 int getCacheMisses() override { return fCacheMisses; }
47 void resetCacheHitsAndMisses() override { 47 void resetCacheHitsAndMisses() override {
48 fCacheHits = fCacheMisses = 0; 48 fCacheHits = fCacheMisses = 0;
49 } 49 }
50 int fCacheHits; 50 int fCacheHits;
51 int fCacheMisses; 51 int fCacheMisses;
52 #endif // SK_LAZY_CACHE_STATS 52 #endif // SK_LAZY_CACHE_STATS
53 53
54 private: 54 private:
55 SkMutex* fMutex; 55 SkBaseMutex* fMutex;
56 size_t fBudget; 56 size_t fBudget;
57 size_t fUsed; 57 size_t fUsed;
58 SkTInternalLList<PoolDiscardableMemory> fList; 58 SkTInternalLList<PoolDiscardableMemory> fList;
59 59
60 /** Function called to free memory if needed */ 60 /** Function called to free memory if needed */
61 void dumpDownTo(size_t budget); 61 void dumpDownTo(size_t budget);
62 /** called by DiscardableMemoryPool upon destruction */ 62 /** called by DiscardableMemoryPool upon destruction */
63 void free(PoolDiscardableMemory* dm); 63 void free(PoolDiscardableMemory* dm);
64 /** called by DiscardableMemoryPool::lock() */ 64 /** called by DiscardableMemoryPool::lock() */
65 bool lock(PoolDiscardableMemory* dm); 65 bool lock(PoolDiscardableMemory* dm);
66 /** called by DiscardableMemoryPool::unlock() */ 66 /** called by DiscardableMemoryPool::unlock() */
67 void unlock(PoolDiscardableMemory* dm); 67 void unlock(PoolDiscardableMemory* dm);
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
121 return fPointer; 121 return fPointer;
122 } 122 }
123 123
124 void PoolDiscardableMemory::unlock() { 124 void PoolDiscardableMemory::unlock() {
125 SkASSERT(fLocked); // contract for SkDiscardableMemory 125 SkASSERT(fLocked); // contract for SkDiscardableMemory
126 fPool->unlock(this); 126 fPool->unlock(this);
127 } 127 }
128 128
129 //////////////////////////////////////////////////////////////////////////////// 129 ////////////////////////////////////////////////////////////////////////////////
130 130
131 DiscardableMemoryPool::DiscardableMemoryPool(size_t budget, SkMutex* mutex) 131 DiscardableMemoryPool::DiscardableMemoryPool(size_t budget,
132 SkBaseMutex* mutex)
132 : fMutex(mutex) 133 : fMutex(mutex)
133 , fBudget(budget) 134 , fBudget(budget)
134 , fUsed(0) { 135 , fUsed(0) {
135 #if SK_LAZY_CACHE_STATS 136 #if SK_LAZY_CACHE_STATS
136 fCacheHits = 0; 137 fCacheHits = 0;
137 fCacheMisses = 0; 138 fCacheMisses = 0;
138 #endif // SK_LAZY_CACHE_STATS 139 #endif // SK_LAZY_CACHE_STATS
139 } 140 }
140 DiscardableMemoryPool::~DiscardableMemoryPool() { 141 DiscardableMemoryPool::~DiscardableMemoryPool() {
141 // PoolDiscardableMemory objects that belong to this pool are 142 // PoolDiscardableMemory objects that belong to this pool are
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
233 fBudget = budget; 234 fBudget = budget;
234 this->dumpDownTo(fBudget); 235 this->dumpDownTo(fBudget);
235 } 236 }
236 void DiscardableMemoryPool::dumpPool() { 237 void DiscardableMemoryPool::dumpPool() {
237 SkAutoMutexAcquire autoMutexAcquire(fMutex); 238 SkAutoMutexAcquire autoMutexAcquire(fMutex);
238 this->dumpDownTo(0); 239 this->dumpDownTo(0);
239 } 240 }
240 241
241 } // namespace 242 } // namespace
242 243
243 SkDiscardableMemoryPool* SkDiscardableMemoryPool::Create(size_t size, SkMutex* m utex) { 244 SkDiscardableMemoryPool* SkDiscardableMemoryPool::Create(size_t size, SkBaseMute x* mutex) {
244 return new DiscardableMemoryPool(size, mutex); 245 return new DiscardableMemoryPool(size, mutex);
245 } 246 }
246 247
247 SK_DECLARE_STATIC_MUTEX(gMutex); 248 SK_DECLARE_STATIC_MUTEX(gMutex);
248 SK_DECLARE_STATIC_ONCE_PTR(SkDiscardableMemoryPool, global); 249 SK_DECLARE_STATIC_ONCE_PTR(SkDiscardableMemoryPool, global);
249 250
250 SkDiscardableMemoryPool* SkGetGlobalDiscardableMemoryPool() { 251 SkDiscardableMemoryPool* SkGetGlobalDiscardableMemoryPool() {
251 return global.get([] { 252 return global.get([] {
252 return SkDiscardableMemoryPool::Create(SK_DEFAULT_GLOBAL_DISCARDABLE_MEM ORY_POOL_SIZE, 253 return SkDiscardableMemoryPool::Create(SK_DEFAULT_GLOBAL_DISCARDABLE_MEM ORY_POOL_SIZE,
253 &gMutex); 254 &gMutex);
254 }); 255 });
255 } 256 }
OLDNEW
« no previous file with comments | « src/lazy/SkDiscardableMemoryPool.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698