blob: cc2db819f9042d3f04b20dbf5aad05a63b8b990d [file] [log] [blame]
scroggo@google.combb281f72013-03-18 21:37:39 +00001/*
2 * Copyright 2013 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8#ifndef SkPurgeableImageCache_DEFINED
9#define SkPurgeableImageCache_DEFINED
10
11#include "SkImageCache.h"
12
13#ifdef SK_DEBUG
14 #include "SkTDArray.h"
15#endif
16
17/**
18 * Implementation for SkImageCache that uses system defined purgeable memory.
19 */
20class SkPurgeableImageCache : public SkImageCache {
21
22public:
23 static SkImageCache* Create();
24
reed@google.com6e8b7dd2013-07-09 21:31:54 +000025 virtual void* allocAndPinCache(size_t bytes, ID*) SK_OVERRIDE;
26 virtual void* pinCache(ID, SkImageCache::DataStatus*) SK_OVERRIDE;
27 virtual void releaseCache(ID) SK_OVERRIDE;
28 virtual void throwAwayCache(ID) SK_OVERRIDE;
scroggo@google.combb281f72013-03-18 21:37:39 +000029
30#ifdef SK_DEBUG
reed@google.com6e8b7dd2013-07-09 21:31:54 +000031 virtual MemoryStatus getMemoryStatus(ID) const SK_OVERRIDE;
scroggo@google.combb281f72013-03-18 21:37:39 +000032 virtual void purgeAllUnpinnedCaches() SK_OVERRIDE;
33 virtual ~SkPurgeableImageCache();
34#endif
35
36private:
37 SkPurgeableImageCache();
38
39#ifdef SK_DEBUG
reed@google.com6e8b7dd2013-07-09 21:31:54 +000040 SkTDArray<ID> fRecs;
41 int findRec(ID) const;
scroggo@google.combb281f72013-03-18 21:37:39 +000042#endif
reed@google.com6e8b7dd2013-07-09 21:31:54 +000043 void removeRec(ID);
scroggo@google.combb281f72013-03-18 21:37:39 +000044};
45#endif // SkPurgeableImageCache_DEFINED