Index: src/core/SkBasicDiscardableMemory.cpp |
diff --git a/src/core/SkBasicDiscardableMemory.cpp b/src/core/SkBasicDiscardableMemory.cpp |
new file mode 100644 |
index 0000000000000000000000000000000000000000..d2729cde3f1b32be78ee218c9cbcb5cf73f5bff7 |
--- /dev/null |
+++ b/src/core/SkBasicDiscardableMemory.cpp |
@@ -0,0 +1,43 @@ |
+/* |
+ * 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 "SkBasicDiscardableMemory.h" |
+#include "SkTypes.h" |
+ |
+SkDiscardableMemory* SkBasicDiscardableMemory::Create(size_t bytes) { |
+ void* ptr = sk_malloc_throw(bytes); |
+ if (NULL == ptr) { |
+ return NULL; |
+ } |
+ return SkNEW_ARGS(SkBasicDiscardableMemory, (ptr)); |
+} |
+ |
+SkBasicDiscardableMemory::SkBasicDiscardableMemory(void* ptr) |
+ : fLocked(true) |
+ , fPointer(ptr) { |
+ SkASSERT(fPointer != NULL); |
+} |
+ |
+SkBasicDiscardableMemory::~SkBasicDiscardableMemory() { |
+ SkASSERT(!fLocked); |
+ sk_free(fPointer); |
+} |
+ |
+bool SkBasicDiscardableMemory::lock() { |
+ SkASSERT(!fLocked); |
+ return fLocked = true; |
+} |
+ |
+void* SkBasicDiscardableMemory::data() { |
+ SkASSERT(fLocked); |
+ return fPointer; |
scroggo
2013/11/19 22:19:27
Should this return NULL if not locked?
hal.canary
2013/11/20 00:07:10
Should we allow the caller to make that mistake?
|
+} |
+ |
+void SkBasicDiscardableMemory::unlock() { |
+ SkASSERT(fLocked); |
+ fLocked = false; |
+} |