1// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "mojo/services/gles2/mojo_buffer_backing.h"
6
7#include "base/logging.h"
8
9namespace mojo {
10namespace gles2 {
11
12MojoBufferBacking::MojoBufferBacking(mojo::ScopedSharedBufferHandle handle,
13                                     void* memory,
14                                     size_t size)
15    : handle_(handle.Pass()), memory_(memory), size_(size) {}
16
17MojoBufferBacking::~MojoBufferBacking() { mojo::UnmapBuffer(memory_); }
18
19// static
20scoped_ptr<gpu::BufferBacking> MojoBufferBacking::Create(
21    mojo::ScopedSharedBufferHandle handle,
22    size_t size) {
23  void* memory = NULL;
24  MojoResult result = mojo::MapBuffer(
25      handle.get(), 0, size, &memory, MOJO_MAP_BUFFER_FLAG_NONE);
26  if (result != MOJO_RESULT_OK)
27    return scoped_ptr<BufferBacking>();
28  DCHECK(memory);
29  return scoped_ptr<BufferBacking>(
30      new MojoBufferBacking(handle.Pass(), memory, size));
31}
32void* MojoBufferBacking::GetMemory() const { return memory_; }
33size_t MojoBufferBacking::GetSize() const { return size_; }
34
35}  // namespace gles2
36}  // namespace mojo
37