aboutsummaryrefslogtreecommitdiffstats
path: root/libsgl/images/SkImageRefPool.h
diff options
context:
space:
mode:
Diffstat (limited to 'libsgl/images/SkImageRefPool.h')
-rw-r--r--libsgl/images/SkImageRefPool.h43
1 files changed, 43 insertions, 0 deletions
diff --git a/libsgl/images/SkImageRefPool.h b/libsgl/images/SkImageRefPool.h
new file mode 100644
index 0000000..b2eb7b3
--- /dev/null
+++ b/libsgl/images/SkImageRefPool.h
@@ -0,0 +1,43 @@
+#ifndef SkImageRefPool_DEFINED
+#define SkImageRefPool_DEFINED
+
+#include "SkTypes.h"
+
+class SkImageRef;
+class SkImageRef_GlobalPool;
+
+class SkImageRefPool {
+public:
+ SkImageRefPool();
+ ~SkImageRefPool();
+
+ size_t getRAMBudget() const { return fRAMBudget; }
+ void setRAMBudget(size_t);
+
+ size_t getRAMUsed() const { return fRAMUsed; }
+ void setRAMUsed(size_t limit);
+
+ void addToHead(SkImageRef*);
+ void addToTail(SkImageRef*);
+ void detach(SkImageRef*);
+
+ void dump() const;
+
+private:
+ size_t fRAMBudget;
+ size_t fRAMUsed;
+
+ int fCount;
+ SkImageRef* fHead, *fTail;
+
+ int computeCount() const;
+
+ friend class SkImageRef_GlobalPool;
+
+ void justAddedPixels(SkImageRef*);
+ void canLosePixels(SkImageRef*);
+ void purgeIfNeeded();
+};
+
+#endif
+