// 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 "cc/test/test_shared_bitmap_manager.h" #include "base/memory/shared_memory.h" namespace cc { namespace { class OwnedSharedBitmap : public SharedBitmap { public: OwnedSharedBitmap(scoped_ptr shared_memory, const SharedBitmapId& id) : SharedBitmap(static_cast(shared_memory->memory()), id), shared_memory_(std::move(shared_memory)) {} ~OwnedSharedBitmap() override {} private: scoped_ptr shared_memory_; }; } // namespace TestSharedBitmapManager::TestSharedBitmapManager() {} TestSharedBitmapManager::~TestSharedBitmapManager() {} scoped_ptr TestSharedBitmapManager::AllocateSharedBitmap( const gfx::Size& size) { base::AutoLock lock(lock_); scoped_ptr memory(new base::SharedMemory); memory->CreateAndMapAnonymous(size.GetArea() * 4); SharedBitmapId id = SharedBitmap::GenerateId(); bitmap_map_[id] = memory.get(); return make_scoped_ptr(new OwnedSharedBitmap(std::move(memory), id)); } scoped_ptr TestSharedBitmapManager::GetSharedBitmapFromId( const gfx::Size&, const SharedBitmapId& id) { base::AutoLock lock(lock_); if (bitmap_map_.find(id) == bitmap_map_.end()) return nullptr; uint8* pixels = static_cast(bitmap_map_[id]->memory()); return make_scoped_ptr(new SharedBitmap(pixels, id)); } } // namespace cc