blob: 7d686acba9c9bd2ecd196fee56b756f0895784a7 [file] [log] [blame]
// 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::SharedMemoryCreateOptions options;
options.size = sizeof(GamepadHardwareBuffer);
options.share_read_only = true;
bool res = shared_memory_.Create(options) && shared_memory_.Map(options.size);
CHECK(res);
void* mem = shared_memory_.memory();
DCHECK(mem);
hardware_buffer_ = new (mem) GamepadHardwareBuffer();
memset(&(hardware_buffer_->data), 0, sizeof(Gamepads));
}
GamepadSharedBuffer::~GamepadSharedBuffer() = default;
base::SharedMemory* GamepadSharedBuffer::shared_memory() {
return &shared_memory_;
}
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