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 "cc/blink/web_external_bitmap_impl.h"
6
7#include "base/memory/shared_memory.h"
8
9namespace cc_blink {
10
11namespace {
12
13SharedMemoryAllocationFunction g_memory_allocator;
14
15}  // namespace
16
17void SetSharedMemoryAllocationFunction(
18    SharedMemoryAllocationFunction allocator) {
19  g_memory_allocator = allocator;
20}
21
22WebExternalBitmapImpl::WebExternalBitmapImpl() {
23}
24
25WebExternalBitmapImpl::~WebExternalBitmapImpl() {
26}
27
28void WebExternalBitmapImpl::setSize(blink::WebSize size) {
29  if (size != size_) {
30    size_t byte_size = size.width * size.height * 4;
31    shared_memory_ = g_memory_allocator(byte_size);
32    if (shared_memory_)
33      shared_memory_->Map(byte_size);
34    size_ = size;
35  }
36}
37
38blink::WebSize WebExternalBitmapImpl::size() {
39  return size_;
40}
41
42uint8* WebExternalBitmapImpl::pixels() {
43  return static_cast<uint8*>(shared_memory_->memory());
44}
45
46}  // namespace cc_blink
47