Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2187)

Unified Diff: device/gamepad/gamepad_shared_buffer.h

Issue 2563483006: Move gamepad_service out of content/ and into device/ (Closed)
Patch Set: addressed Blundell's review comments Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « device/gamepad/gamepad_service_unittest.cc ('k') | device/gamepad/gamepad_shared_buffer.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
« no previous file with comments | « device/gamepad/gamepad_service_unittest.cc ('k') | device/gamepad/gamepad_shared_buffer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698