1#ifndef SkImageRefPool_DEFINED
2#define SkImageRefPool_DEFINED
3
4#include "SkTypes.h"
5
6class SkImageRef;
7class SkImageRef_GlobalPool;
8
9class SkImageRefPool {
10public:
11    SkImageRefPool();
12    ~SkImageRefPool();
13
14    size_t  getRAMBudget() const { return fRAMBudget; }
15    void    setRAMBudget(size_t);
16
17    size_t  getRAMUsed() const { return fRAMUsed; }
18    void    setRAMUsed(size_t limit);
19
20    void addToHead(SkImageRef*);
21    void addToTail(SkImageRef*);
22    void detach(SkImageRef*);
23
24    void dump() const;
25
26private:
27    size_t fRAMBudget;
28    size_t fRAMUsed;
29
30    int         fCount;
31    SkImageRef* fHead, *fTail;
32
33    int computeCount() const;
34
35    friend class SkImageRef_GlobalPool;
36
37    void justAddedPixels(SkImageRef*);
38    void canLosePixels(SkImageRef*);
39    void purgeIfNeeded();
40};
41
42#endif
43
44