17dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// Copyright 2013 The Chromium Authors. All rights reserved. 27dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 37dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// found in the LICENSE file. 47dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 57dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "webkit/renderer/compositor_bindings/web_external_bitmap_impl.h" 67dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 77dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "base/memory/shared_memory.h" 87dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 97dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochnamespace webkit { 107dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 117dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochnamespace { 127dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 137dbb3d5cf0c15f500944d211057644d6a2f37371Ben MurdochSharedMemoryAllocationFunction g_memory_allocator; 147dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 157dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch} // namespace 167dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 177dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochvoid SetSharedMemoryAllocationFunction( 187dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch SharedMemoryAllocationFunction allocator) { 197dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch g_memory_allocator = allocator; 207dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch} 217dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 227dbb3d5cf0c15f500944d211057644d6a2f37371Ben MurdochWebExternalBitmapImpl::WebExternalBitmapImpl() {} 237dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 247dbb3d5cf0c15f500944d211057644d6a2f37371Ben MurdochWebExternalBitmapImpl::~WebExternalBitmapImpl() {} 257dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 267dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochvoid WebExternalBitmapImpl::setSize(WebKit::WebSize size) { 277dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch if (size != size_) { 28a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) size_t byte_size = size.width * size.height * 4; 29a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) shared_memory_ = g_memory_allocator(byte_size); 30a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) if (shared_memory_) 31a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) shared_memory_->Map(byte_size); 327dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch size_ = size; 337dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch } 347dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch} 357dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 367dbb3d5cf0c15f500944d211057644d6a2f37371Ben MurdochWebKit::WebSize WebExternalBitmapImpl::size() { 377dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch return size_; 387dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch} 397dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 407dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochuint8* WebExternalBitmapImpl::pixels() { 417dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch return static_cast<uint8*>(shared_memory_->memory()); 427dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch} 437dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 447dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch} // namespace webkit 45