| Index: gpu/command_buffer/client/mapped_memory.h
|
| diff --git a/gpu/command_buffer/client/mapped_memory.h b/gpu/command_buffer/client/mapped_memory.h
|
| index 10ac639929f3664a15d425c9b8fb82f46d331e1a..767bac7d0062ce3a0d7884c48e1c035950fe488f 100644
|
| --- a/gpu/command_buffer/client/mapped_memory.h
|
| +++ b/gpu/command_buffer/client/mapped_memory.h
|
| @@ -199,6 +199,66 @@ class GPU_EXPORT MappedMemoryManager {
|
| DISALLOW_COPY_AND_ASSIGN(MappedMemoryManager);
|
| };
|
|
|
| +// A class that will manage the lifetime of a mapped memory allocation
|
| +class GPU_EXPORT ScopedMappedMemoryPtr {
|
| + public:
|
| + ScopedMappedMemoryPtr(
|
| + uint32_t size,
|
| + CommandBufferHelper* helper,
|
| + MappedMemoryManager* mapped_memory_manager)
|
| + : buffer_(NULL),
|
| + size_(0),
|
| + shm_id_(0),
|
| + shm_offset_(0),
|
| + flush_after_release_(false),
|
| + helper_(helper),
|
| + mapped_memory_manager_(mapped_memory_manager) {
|
| + Reset(size);
|
| + }
|
| +
|
| + ~ScopedMappedMemoryPtr() {
|
| + Release();
|
| + }
|
| +
|
| + bool valid() const {
|
| + return buffer_ != NULL;
|
| + }
|
| +
|
| + void SetFlushAfterRelease(bool flush_after_release) {
|
| + flush_after_release_ = flush_after_release;
|
| + }
|
| +
|
| + uint32_t size() const {
|
| + return size_;
|
| + }
|
| +
|
| + int32_t shm_id() const {
|
| + return shm_id_;
|
| + }
|
| +
|
| + uint32_t offset() const {
|
| + return shm_offset_;
|
| + }
|
| +
|
| + void* address() const {
|
| + return buffer_;
|
| + }
|
| +
|
| + void Release();
|
| +
|
| + void Reset(uint32_t new_size);
|
| +
|
| + private:
|
| + void* buffer_;
|
| + uint32_t size_;
|
| + int32_t shm_id_;
|
| + uint32_t shm_offset_;
|
| + bool flush_after_release_;
|
| + CommandBufferHelper* helper_;
|
| + MappedMemoryManager* mapped_memory_manager_;
|
| + DISALLOW_COPY_AND_ASSIGN(ScopedMappedMemoryPtr);
|
| +};
|
| +
|
| } // namespace gpu
|
|
|
| #endif // GPU_COMMAND_BUFFER_CLIENT_MAPPED_MEMORY_H_
|
|
|