123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- // Copyright 2016 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 "device/gamepad/gamepad_shared_buffer.h"
- namespace device {
- GamepadSharedBuffer::GamepadSharedBuffer() {
- base::MappedReadOnlyRegion mapped_region =
- base::ReadOnlySharedMemoryRegion::Create(sizeof(GamepadHardwareBuffer));
- CHECK(mapped_region.IsValid());
- shared_memory_region_ = std::move(mapped_region.region);
- shared_memory_mapping_ = std::move(mapped_region.mapping);
- void* mem = shared_memory_mapping_.memory();
- DCHECK(mem);
- hardware_buffer_ = new (mem) GamepadHardwareBuffer();
- memset(&(hardware_buffer_->data), 0, sizeof(Gamepads));
- }
- GamepadSharedBuffer::~GamepadSharedBuffer() = default;
- base::ReadOnlySharedMemoryRegion
- GamepadSharedBuffer::DuplicateSharedMemoryRegion() {
- return shared_memory_region_.Duplicate();
- }
- Gamepads* GamepadSharedBuffer::buffer() {
- return &(hardware_buffer()->data);
- }
- GamepadHardwareBuffer* GamepadSharedBuffer::hardware_buffer() {
- return hardware_buffer_;
- }
- void GamepadSharedBuffer::WriteBegin() {
- hardware_buffer_->seqlock.WriteBegin();
- }
- void GamepadSharedBuffer::WriteEnd() {
- hardware_buffer_->seqlock.WriteEnd();
- }
- } // namespace device
|