Chromium Code Reviews| Index: content/renderer/gamepad_shared_memory_reader.h |
| diff --git a/content/renderer/gamepad_shared_memory_reader.h b/content/renderer/gamepad_shared_memory_reader.h |
| index 08dc41a8c91e1e9edd7aedbfdf591777e5c78481..314b6ccdde11a5a6d8d0257f3227a2202857bc1e 100644 |
| --- a/content/renderer/gamepad_shared_memory_reader.h |
| +++ b/content/renderer/gamepad_shared_memory_reader.h |
| @@ -7,23 +7,54 @@ |
| #include "base/memory/scoped_ptr.h" |
| #include "base/memory/shared_memory.h" |
| +#include "content/common/gamepad_messages.h" |
| +#include "ipc/message_filter.h" |
| #include "third_party/WebKit/public/platform/WebGamepads.h" |
| +namespace blink { class WebGamepadListener; } |
| + |
| namespace content { |
| struct GamepadHardwareBuffer; |
| -class GamepadSharedMemoryReader { |
| +class GamepadSharedMemoryReader : public IPC::MessageFilter { |
|
jam
2014/05/05 21:19:09
generally, you would implement an IPC::MessageFilt
kbalazs
2014/05/06 22:20:34
Done, indeed much better this way.
|
| public: |
| - GamepadSharedMemoryReader(); |
| - virtual ~GamepadSharedMemoryReader(); |
| + GamepadSharedMemoryReader( |
| + const scoped_refptr<base::MessageLoopProxy>& io_message_loop); |
| void SampleGamepads(blink::WebGamepads&); |
| + void SetGamepadListener(blink::WebGamepadListener* listener); |
| + |
| + protected: |
| + virtual ~GamepadSharedMemoryReader(); |
| private: |
| + void StartPollingIfNecessary(); |
| + void StopPollingIfNecessary(); |
| + |
| + // IPC::ChannelProxy::MessageFilter override. Called on |io_message_loop|. |
| + virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE; |
| + |
| + // Called when a gamepad is connected to the system |
| + void OnGamepadConnected(int index, const blink::WebGamepad& gamepad); |
| + |
| + // Called when a gamepad is disconnected from the system |
| + void OnGamepadDisconnected(int index, const blink::WebGamepad& gamepad); |
| + |
| + void DispatchGamepadConnected(int index, const blink::WebGamepad& gamepad); |
| + void DispatchGamepadDisconnected(int index, const blink::WebGamepad& gamepad); |
| + |
| + // Message loop on which IPC calls are driven. |
| + const scoped_refptr<base::MessageLoopProxy> io_message_loop_; |
| + |
| + // Main thread's message loop. |
| + scoped_refptr<base::MessageLoopProxy> main_message_loop_; |
| + |
| base::SharedMemoryHandle renderer_shared_memory_handle_; |
| scoped_ptr<base::SharedMemory> renderer_shared_memory_; |
| GamepadHardwareBuffer* gamepad_hardware_buffer_; |
| + blink::WebGamepadListener* gamepad_listener_; |
| + bool is_polling_; |
| bool ever_interacted_with_; |
| }; |