| 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 | 
|  |