OLD | NEW |
| (Empty) |
1 #include "SkImageRef_GlobalPool.h" | |
2 #include "SkImageRefPool.h" | |
3 #include "SkThread.h" | |
4 | |
5 extern SkMutex gImageRefMutex; | |
6 | |
7 static SkImageRefPool gGlobalImageRefPool; | |
8 | |
9 SkImageRef_GlobalPool::SkImageRef_GlobalPool(SkStream* stream, | |
10 SkBitmap::Config config, | |
11 int sampleSize) | |
12 : SkImageRef(stream, config, sampleSize) { | |
13 this->mutex()->acquire(); | |
14 gGlobalImageRefPool.addToHead(this); | |
15 this->mutex()->release(); | |
16 } | |
17 | |
18 SkImageRef_GlobalPool::~SkImageRef_GlobalPool() { | |
19 this->mutex()->acquire(); | |
20 gGlobalImageRefPool.detach(this); | |
21 this->mutex()->release(); | |
22 } | |
23 | |
24 bool SkImageRef_GlobalPool::onDecode(SkImageDecoder* codec, SkStream* stream, | |
25 SkBitmap* bitmap, SkBitmap::Config config, | |
26 SkImageDecoder::Mode mode) { | |
27 if (!this->INHERITED::onDecode(codec, stream, bitmap, config, mode)) { | |
28 return false; | |
29 } | |
30 if (mode == SkImageDecoder::kDecodePixels_Mode) { | |
31 gGlobalImageRefPool.justAddedPixels(this); | |
32 } | |
33 return true; | |
34 } | |
35 | |
36 void SkImageRef_GlobalPool::onUnlockPixels() { | |
37 this->INHERITED::onUnlockPixels(); | |
38 | |
39 gGlobalImageRefPool.canLosePixels(this); | |
40 } | |
41 | |
42 SkImageRef_GlobalPool::SkImageRef_GlobalPool(SkFlattenableReadBuffer& buffer) | |
43 : INHERITED(buffer) { | |
44 this->mutex()->acquire(); | |
45 gGlobalImageRefPool.addToHead(this); | |
46 this->mutex()->release(); | |
47 } | |
48 | |
49 SkPixelRef* SkImageRef_GlobalPool::Create(SkFlattenableReadBuffer& buffer) { | |
50 return SkNEW_ARGS(SkImageRef_GlobalPool, (buffer)); | |
51 } | |
52 | |
53 static SkPixelRef::Registrar::Registrar reg("SkImageRef_GlobalPool", | |
54 SkImageRef_GlobalPool::Create); | |
55 | |
56 /////////////////////////////////////////////////////////////////////////////// | |
57 // global imagerefpool wrappers | |
58 | |
59 size_t SkImageRef_GlobalPool::GetRAMBudget() { | |
60 SkAutoMutexAcquire ac(gImageRefMutex); | |
61 return gGlobalImageRefPool.getRAMBudget(); | |
62 } | |
63 | |
64 void SkImageRef_GlobalPool::SetRAMBudget(size_t size) { | |
65 SkAutoMutexAcquire ac(gImageRefMutex); | |
66 gGlobalImageRefPool.setRAMBudget(size); | |
67 } | |
68 | |
69 size_t SkImageRef_GlobalPool::GetRAMUsed() { | |
70 SkAutoMutexAcquire ac(gImageRefMutex); | |
71 return gGlobalImageRefPool.getRAMUsed(); | |
72 } | |
73 | |
74 void SkImageRef_GlobalPool::SetRAMUsed(size_t usage) { | |
75 SkAutoMutexAcquire ac(gImageRefMutex); | |
76 gGlobalImageRefPool.setRAMUsed(usage); | |
77 } | |
78 | |
79 void SkImageRef_GlobalPool::DumpPool() { | |
80 SkAutoMutexAcquire ac(gImageRefMutex); | |
81 gGlobalImageRefPool.dump(); | |
82 } | |
83 | |
OLD | NEW |