1 2/* 3 * Copyright 2008 The Android Open Source Project 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 9 10#ifndef SkImageRef_GlobalPool_DEFINED 11#define SkImageRef_GlobalPool_DEFINED 12 13#include "SkImageRef.h" 14 15class SkImageRef_GlobalPool : public SkImageRef { 16public: 17 // if pool is null, use the global pool 18 SkImageRef_GlobalPool(SkStream*, SkBitmap::Config, int sampleSize = 1); 19 virtual ~SkImageRef_GlobalPool(); 20 21 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkImageRef_GlobalPool) 22 23 // API to control the global pool 24 25 /** Return the amount specified as the budget for the cache (in bytes). 26 */ 27 static size_t GetRAMBudget(); 28 29 /** Set a new budget value for the cache. 30 */ 31 static void SetRAMBudget(size_t); 32 33 /** Return how much ram is currently in use by the global cache. 34 */ 35 static size_t GetRAMUsed(); 36 37 /** Free up (approximately) enough such that the amount used by the cache 38 is <= the specified amount. Since some images may be "in use", the 39 amount actually freed may not always result in a ram usage value <= 40 to the requested amount. In addition, because of the 41 chunky nature of the cache, the resulting usage may be < the requested 42 amount. 43 */ 44 static void SetRAMUsed(size_t usageInBytes); 45 46 static void DumpPool(); 47 48protected: 49 virtual bool onDecode(SkImageDecoder* codec, SkStream* stream, 50 SkBitmap* bitmap, SkBitmap::Config config, 51 SkImageDecoder::Mode mode); 52 53 virtual void onUnlockPixels(); 54 55 SkImageRef_GlobalPool(SkFlattenableReadBuffer&); 56 57private: 58 typedef SkImageRef INHERITED; 59}; 60 61#endif 62