Chromium Code Reviews| 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; |
| +} |