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