Chromium Code Reviews| Index: include/lazy/SkPurgeableImageCache.h |
| diff --git a/include/lazy/SkPurgeableImageCache.h b/include/lazy/SkPurgeableImageCache.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..98ace4a689ddbd58e0a39644fc0fa6e7b9602d68 |
| --- /dev/null |
| +++ b/include/lazy/SkPurgeableImageCache.h |
| @@ -0,0 +1,54 @@ |
| +/* |
| + * 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: |
| + /** |
| + * Get a pointer to the single global instance of the purgeable image cache. |
| + * If there is no Skia implementation for purgeable memory, this returns NULL. |
| + * If non-NULL, the caller must unref it after use. |
| + */ |
| + static SkImageCache* GetPurgeableImageCache(); |
|
reed1
2013/03/18 21:25:17
Why isn't this just called Create()?
scroggo
2013/03/18 21:37:16
Done.
|
| + |
| + 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: |
| + /** |
| + * Constructor is private. The correct way to get this cache is through |
| + * GetPurgeableImageCache, which will return the single global. |
| + */ |
| + SkPurgeableImageCache(); |
| + |
| +#ifdef SK_DEBUG |
| + SkTDArray<intptr_t> fRecs; |
| + int findRec(intptr_t) const; |
| +#endif |
| + void removeRec(intptr_t); |
| +}; |
| +#endif // SkPurgeableImageCache_DEFINED |