| // Copyright 2014 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "services/gles2/mojo_buffer_backing.h" |
| |
| #include "base/logging.h" |
| |
| namespace gles2 { |
| |
| MojoBufferBacking::MojoBufferBacking(mojo::ScopedSharedBufferHandle handle, |
| void* memory, |
| size_t size) |
| : handle_(handle.Pass()), memory_(memory), size_(size) {} |
| |
| MojoBufferBacking::~MojoBufferBacking() { mojo::UnmapBuffer(memory_); } |
| |
| // static |
| scoped_ptr<gpu::BufferBacking> MojoBufferBacking::Create( |
| mojo::ScopedSharedBufferHandle handle, |
| size_t size) { |
| void* memory = NULL; |
| MojoResult result = mojo::MapBuffer( |
| handle.get(), 0, size, &memory, MOJO_MAP_BUFFER_FLAG_NONE); |
| if (result != MOJO_RESULT_OK) |
| return scoped_ptr<BufferBacking>(); |
| DCHECK(memory); |
| return scoped_ptr<BufferBacking>( |
| new MojoBufferBacking(handle.Pass(), memory, size)); |
| } |
| void* MojoBufferBacking::GetMemory() const { return memory_; } |
| size_t MojoBufferBacking::GetSize() const { return size_; } |
| |
| } // namespace gles2 |