diff options
author | 2013-11-21 15:32:08 +0000 | |
---|---|---|
committer | 2013-11-21 15:32:08 +0000 | |
commit | ad04eb49f5d3f324e6b85411c776d7466c1fef92 (patch) | |
tree | 72ec9bb693a1da847d1b3f6d1958ea2f0638e5c2 /src/ports/SkDiscardableMemory_none.cpp | |
parent | 8b656c6db40a99af241e38eae853f887413040cc (diff) |
Add SkImageGenerator Interface
- Add SkDiscardablePixelRef class that uses SkDiscardableMemory and
a SkImageGenerator.
- Add SkDecodingImageGenerator class as an example of a
SkImageGenerator.
- Add DecodingImageGenerator unit test.
- Add SkBasicDiscardableMemory implmentation for unit tests only.
R=reed@google.com, scroggo@google.com
Review URL: https://codereview.chromium.org/74793011
git-svn-id: http://skia.googlecode.com/svn/trunk@12341 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'src/ports/SkDiscardableMemory_none.cpp')
-rw-r--r-- | src/ports/SkDiscardableMemory_none.cpp | 51 |
1 files changed, 50 insertions, 1 deletions
diff --git a/src/ports/SkDiscardableMemory_none.cpp b/src/ports/SkDiscardableMemory_none.cpp index 6559097e62..700713ba48 100644 --- a/src/ports/SkDiscardableMemory_none.cpp +++ b/src/ports/SkDiscardableMemory_none.cpp @@ -6,7 +6,56 @@ */ #include "SkDiscardableMemory.h" +#include "SkTypes.h" + +namespace { +//////////////////////////////////////////////////////////////////////////////// +/** + * Always successful, never purges. Useful for testing. + */ +class SkMockDiscardableMemory : public SkDiscardableMemory { +public: + SkMockDiscardableMemory(void*); + virtual ~SkMockDiscardableMemory(); + virtual bool lock() SK_OVERRIDE; + virtual void* data() SK_OVERRIDE; + virtual void unlock() SK_OVERRIDE; +private: + bool fLocked; + void* fPointer; +}; + +//////////////////////////////////////////////////////////////////////////////// + +SkMockDiscardableMemory::SkMockDiscardableMemory(void* ptr) + : fLocked(true) + , fPointer(ptr) { // Takes ownership of ptr. + SkASSERT(fPointer != NULL); +} + +SkMockDiscardableMemory::~SkMockDiscardableMemory() { + SkASSERT(!fLocked); + sk_free(fPointer); +} + +bool SkMockDiscardableMemory::lock() { + SkASSERT(!fLocked); + return fLocked = true; +} + +void* SkMockDiscardableMemory::data() { + SkASSERT(fLocked); + return fLocked ? fPointer : NULL; +} + +void SkMockDiscardableMemory::unlock() { + SkASSERT(fLocked); + fLocked = false; +} +//////////////////////////////////////////////////////////////////////////////// +} // namespace SkDiscardableMemory* SkDiscardableMemory::Create(size_t bytes) { - return NULL; + void* ptr = sk_malloc_throw(bytes); + return (ptr != NULL) ? SkNEW_ARGS(SkMockDiscardableMemory, (ptr)) : NULL; } |