| Index: device/gamepad/gamepad_shared_buffer.h
|
| diff --git a/device/gamepad/gamepad_shared_buffer.h b/device/gamepad/gamepad_shared_buffer.h
|
| index 04cb911df969e107bbeb82ef6831e3abaa6ba2ee..b98e9616b9269ae809b6e71d8314658e102b24d6 100644
|
| --- a/device/gamepad/gamepad_shared_buffer.h
|
| +++ b/device/gamepad/gamepad_shared_buffer.h
|
| @@ -6,20 +6,42 @@
|
| #define DEVICE_GAMEPAD_SHARED_BUFFER_H_
|
|
|
| #include "base/memory/shared_memory.h"
|
| +#include "device/base/synchronization/shared_memory_seqlock_buffer.h"
|
| #include "device/gamepad/gamepad_export.h"
|
| #include "third_party/WebKit/public/platform/WebGamepads.h"
|
|
|
| namespace device {
|
|
|
| +/*
|
| +
|
| + GamepadHardwareBuffer is stored in shared memory that's shared between the
|
| + browser which does the hardware polling, and the various consumers of the
|
| + gamepad state (renderers and NaCl plugins). The performance characteristics are
|
| + that we want low latency (so would like to avoid explicit communication via IPC
|
| + between producer and consumer) and relatively large data size.
|
| +
|
| + Writer and reader operate on the same buffer assuming contention is low, and
|
| + contention is detected by using the associated SeqLock.
|
| +
|
| +*/
|
| +
|
| +typedef SharedMemorySeqLockBuffer<blink::WebGamepads> GamepadHardwareBuffer;
|
| +
|
| class DEVICE_GAMEPAD_EXPORT GamepadSharedBuffer {
|
| public:
|
| - virtual ~GamepadSharedBuffer() {}
|
| + GamepadSharedBuffer();
|
| + ~GamepadSharedBuffer();
|
| +
|
| + base::SharedMemory* shared_memory();
|
| + blink::WebGamepads* buffer();
|
| + GamepadHardwareBuffer* hardware_buffer();
|
|
|
| - virtual base::SharedMemory* shared_memory() = 0;
|
| - virtual blink::WebGamepads* buffer() = 0;
|
| + void WriteBegin();
|
| + void WriteEnd();
|
|
|
| - virtual void WriteBegin() = 0;
|
| - virtual void WriteEnd() = 0;
|
| + private:
|
| + base::SharedMemory shared_memory_;
|
| + GamepadHardwareBuffer* hardware_buffer_;
|
| };
|
|
|
| } // namespace device
|
|
|