
/*
 * 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

