diff --git a/gyp/ports.gyp b/gyp/ports.gyp index 6ee1e32a03..324cacb020 100644 --- a/gyp/ports.gyp +++ b/gyp/ports.gyp @@ -37,6 +37,7 @@ '../src/ports/SkOSFile_posix.cpp', '../src/ports/SkOSFile_stdio.cpp', '../src/ports/SkOSFile_win.cpp', + '../src/ports/SkDiscardableMemory_none.cpp', '../src/ports/SkPurgeableMemoryBlock_none.cpp', #'../src/ports/SkThread_none.cpp', '../src/ports/SkThread_pthread.cpp', diff --git a/src/core/SkDiscardableMemory.h b/src/core/SkDiscardableMemory.h new file mode 100644 index 0000000000..ca17db38a4 --- /dev/null +++ b/src/core/SkDiscardableMemory.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 SkDiscardableMemory_DEFINED +#define SkDiscardableMemory_DEFINED + +#include "SkTypes.h" + +/** + * Interface for discardable memory. Implementation is provided by the + * embedder. + */ +class SkDiscardableMemory { + +public: + /** + * Factory method that creates, initializes and locks an SkDiscardableMemory + * object. If either of these steps fails, a NULL pointer will be returned. + */ + static SkDiscardableMemory* Create(size_t bytes); + + /** Must not be called while locked. + */ + virtual ~SkDiscardableMemory() {} + + /** + * Locks the memory, prevent it from being discarded. Once locked. you may + * obtain a pointer to that memory using the data() method. + * + * lock() may return false, indicating that the underlying memory was + * discarded and that the lock failed. + * + * Nested calls to lock are not allowed. + */ + virtual bool lock() = 0; + + /** + * Returns the current pointer for the discardable memory. This call is ONLY + * valid when the discardable memory object is locked. + */ + virtual void* data() = 0; + + /** + * Unlock the memory so that it can be purged by the system. Must be called + * after every successful lock call. + */ + virtual void unlock() = 0; +}; + +#endif diff --git a/src/ports/SkDiscardableMemory_none.cpp b/src/ports/SkDiscardableMemory_none.cpp new file mode 100644 index 0000000000..6559097e62 --- /dev/null +++ b/src/ports/SkDiscardableMemory_none.cpp @@ -0,0 +1,12 @@ +/* + * Copyright 2013 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include "SkDiscardableMemory.h" + +SkDiscardableMemory* SkDiscardableMemory::Create(size_t bytes) { + return NULL; +}