• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 
2 /*
3  * Copyright 2011 Google Inc.
4  *
5  * Use of this source code is governed by a BSD-style license that can be
6  * found in the LICENSE file.
7  */
8 #ifndef SkImageRefPool_DEFINED
9 #define SkImageRefPool_DEFINED
10 
11 #include "SkTypes.h"
12 
13 class SkImageRef;
14 class SkImageRef_GlobalPool;
15 
16 class SkImageRefPool {
17 public:
18     SkImageRefPool();
19     ~SkImageRefPool();
20 
getRAMBudget()21     size_t  getRAMBudget() const { return fRAMBudget; }
22     void    setRAMBudget(size_t);
23 
getRAMUsed()24     size_t  getRAMUsed() const { return fRAMUsed; }
25     void    setRAMUsed(size_t limit);
26 
27     void addToHead(SkImageRef*);
28     void addToTail(SkImageRef*);
29     void detach(SkImageRef*);
30 
31     void dump() const;
32 
33 private:
34     size_t fRAMBudget;
35     size_t fRAMUsed;
36 
37     int         fCount;
38     SkImageRef* fHead, *fTail;
39 
40     int computeCount() const;
41 
42     friend class SkImageRef_GlobalPool;
43 
44     void justAddedPixels(SkImageRef*);
45     void canLosePixels(SkImageRef*);
46     void purgeIfNeeded();
47 };
48 
49 #endif
50