aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/ports/SkDiscardableMemory_none.cpp
diff options
context:
space:
mode:
authorGravatar halcanary@google.com <halcanary@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2013-11-21 15:32:08 +0000
committerGravatar halcanary@google.com <halcanary@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2013-11-21 15:32:08 +0000
commitad04eb49f5d3f324e6b85411c776d7466c1fef92 (patch)
tree72ec9bb693a1da847d1b3f6d1958ea2f0638e5c2 /src/ports/SkDiscardableMemory_none.cpp
parent8b656c6db40a99af241e38eae853f887413040cc (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.cpp51
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;
}