/* * Copyright 2013 Google Inc. * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef SkPurgeableImageCache_DEFINED #define SkPurgeableImageCache_DEFINED #include "SkImageCache.h" #ifdef SK_DEBUG #include "SkTDArray.h" #endif /** * Implementation for SkImageCache that uses system defined purgeable memory. */ class SkPurgeableImageCache : public SkImageCache { public: static SkImageCache* Create(); virtual void* allocAndPinCache(size_t bytes, intptr_t* ID) SK_OVERRIDE; virtual void* pinCache(intptr_t ID, SkImageCache::DataStatus*) SK_OVERRIDE; virtual void releaseCache(intptr_t ID) SK_OVERRIDE; virtual void throwAwayCache(intptr_t ID) SK_OVERRIDE; #ifdef SK_DEBUG virtual MemoryStatus getMemoryStatus(intptr_t ID) const SK_OVERRIDE; virtual void purgeAllUnpinnedCaches() SK_OVERRIDE; virtual ~SkPurgeableImageCache(); #endif private: SkPurgeableImageCache(); #ifdef SK_DEBUG SkTDArray fRecs; int findRec(intptr_t) const; #endif void removeRec(intptr_t); }; #endif // SkPurgeableImageCache_DEFINED