| |
| /* |
| * Copyright 2011 Google Inc. |
| * |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| #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 |