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
13class SkImageRef;
14class SkImageRef_GlobalPool;
15
16class SkImageRefPool {
17public:
18    SkImageRefPool();
19    ~SkImageRefPool();
20
21    size_t  getRAMBudget() const { return fRAMBudget; }
22    void    setRAMBudget(size_t);
23
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
33private:
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