| OLD | NEW |
| (Empty) |
| 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/test/test_shared_bitmap_manager.h" | |
| 6 | |
| 7 #include "base/memory/shared_memory.h" | |
| 8 | |
| 9 namespace cc { | |
| 10 | |
| 11 namespace { | |
| 12 class OwnedSharedBitmap : public SharedBitmap { | |
| 13 public: | |
| 14 OwnedSharedBitmap(scoped_ptr<base::SharedMemory> shared_memory, | |
| 15 const SharedBitmapId& id) | |
| 16 : SharedBitmap(static_cast<uint8*>(shared_memory->memory()), id), | |
| 17 shared_memory_(shared_memory.Pass()) {} | |
| 18 | |
| 19 ~OwnedSharedBitmap() override {} | |
| 20 | |
| 21 private: | |
| 22 scoped_ptr<base::SharedMemory> shared_memory_; | |
| 23 }; | |
| 24 | |
| 25 } // namespace | |
| 26 | |
| 27 TestSharedBitmapManager::TestSharedBitmapManager() {} | |
| 28 | |
| 29 TestSharedBitmapManager::~TestSharedBitmapManager() {} | |
| 30 | |
| 31 scoped_ptr<SharedBitmap> TestSharedBitmapManager::AllocateSharedBitmap( | |
| 32 const gfx::Size& size) { | |
| 33 base::AutoLock lock(lock_); | |
| 34 scoped_ptr<base::SharedMemory> memory(new base::SharedMemory); | |
| 35 memory->CreateAndMapAnonymous(size.GetArea() * 4); | |
| 36 SharedBitmapId id = SharedBitmap::GenerateId(); | |
| 37 bitmap_map_[id] = memory.get(); | |
| 38 return make_scoped_ptr(new OwnedSharedBitmap(memory.Pass(), id)); | |
| 39 } | |
| 40 | |
| 41 scoped_ptr<SharedBitmap> TestSharedBitmapManager::GetSharedBitmapFromId( | |
| 42 const gfx::Size&, | |
| 43 const SharedBitmapId& id) { | |
| 44 base::AutoLock lock(lock_); | |
| 45 if (bitmap_map_.find(id) == bitmap_map_.end()) | |
| 46 return nullptr; | |
| 47 uint8* pixels = static_cast<uint8*>(bitmap_map_[id]->memory()); | |
| 48 return make_scoped_ptr(new SharedBitmap(pixels, id)); | |
| 49 } | |
| 50 | |
| 51 } // namespace cc | |
| OLD | NEW |