15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2011 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef CONTENT_COMMON_GAMEPAD_HARDWARE_BUFFER_H_ 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CONTENT_COMMON_GAMEPAD_HARDWARE_BUFFER_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 87dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "content/common/one_writer_seqlock.h" 9868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "third_party/WebKit/public/platform/WebGamepads.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace content { 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)This structure is stored in shared memory that's shared between the browser 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)which does the hardware polling, and the various consumers of the gamepad 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)state (renderers and NaCl plugins). The performance characteristics are that 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)we want low latency (so would like to avoid explicit communication via IPC 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)between producer and consumer) and relatively large data size. 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Writer and reader operate on the same buffer assuming contention is low, and 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)contention is detected by using the associated SeqLock. 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/ 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct GamepadHardwareBuffer { 27f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // FIXME: Use the generic SharedMemorySeqLockBuffer<blink::WebGamepads>. 287dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch OneWriterSeqLock sequence; 29f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebGamepads buffer; 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace content 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif // CONTENT_COMMON_GAMEPAD_HARDWARE_BUFFER_H_ 35