diff options
author | bajones <bajones@chromium.org> | 2016-01-22 15:39:59 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-01-22 23:41:51 +0000 |
commit | 618039679323b6fc09e2146768f121661b0cdd41 (patch) | |
tree | acacaeacf42a8cb4f229af8e6c370139286347c0 /content/browser/gamepad/raw_input_data_fetcher_win.h | |
parent | 7246e45b7da6c14b1384658481ec49b45b5b488c (diff) | |
download | chromium_src-618039679323b6fc09e2146768f121661b0cdd41.zip chromium_src-618039679323b6fc09e2146768f121661b0cdd41.tar.gz chromium_src-618039679323b6fc09e2146768f121661b0cdd41.tar.bz2 |
Refactoring gamepad polling to support dynamically added sources
Also reduces duplicate code between platform data fetchers by having things like
sanitation happen in the provider, and makes the data fetchers themselves more
modular.
BUG=577414
Review URL: https://codereview.chromium.org/1586663006
Cr-Commit-Position: refs/heads/master@{#371083}
Diffstat (limited to 'content/browser/gamepad/raw_input_data_fetcher_win.h')
-rw-r--r-- | content/browser/gamepad/raw_input_data_fetcher_win.h | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/content/browser/gamepad/raw_input_data_fetcher_win.h b/content/browser/gamepad/raw_input_data_fetcher_win.h index 69b780d..e8e742d 100644 --- a/content/browser/gamepad/raw_input_data_fetcher_win.h +++ b/content/browser/gamepad/raw_input_data_fetcher_win.h @@ -40,6 +40,8 @@ struct RawGamepadInfo { RawGamepadInfo(); ~RawGamepadInfo(); + int source_id; + int enumeration_id; HANDLE handle; scoped_ptr<uint8_t[]> ppd_buffer; PHIDP_PREPARSED_DATA preparsed_data; @@ -58,7 +60,8 @@ struct RawGamepadInfo { }; class RawInputDataFetcher - : public base::SupportsWeakPtr<RawInputDataFetcher>, + : public GamepadDataFetcher, + public base::SupportsWeakPtr<RawInputDataFetcher>, public base::MessageLoop::DestructionObserver { public: explicit RawInputDataFetcher(); @@ -67,14 +70,15 @@ class RawInputDataFetcher // DestructionObserver overrides. void WillDestroyCurrentMessageLoop() override; - bool Available() { return rawinput_available_; } - void StartMonitor(); - void StopMonitor(); - - std::vector<RawGamepadInfo*> EnumerateDevices(); - RawGamepadInfo* GetGamepadInfo(HANDLE handle); + void GetGamepadData(bool devices_changed_hint) override; + void PauseHint(bool paused) override; private: + void OnAddedToProvider() override; + + void StartMonitor(); + void StopMonitor(); + void EnumerateDevices(); RawGamepadInfo* ParseGamepadInfo(HANDLE hDevice); void UpdateGamepad(RAWINPUT* input, RawGamepadInfo* gamepad_info); // Handles WM_INPUT messages. @@ -124,8 +128,11 @@ class RawInputDataFetcher bool rawinput_available_; bool filter_xinput_; bool events_monitored_; + int last_source_id_; + int last_enumeration_id_; - std::map<HANDLE, RawGamepadInfo*> controllers_; + typedef std::map<HANDLE, RawGamepadInfo*> ControllerMap; + ControllerMap controllers_; // Function pointers to HID functionality, retrieved in // |GetHidDllFunctions|. |