summaryrefslogtreecommitdiffstats
path: root/content/browser/gamepad/raw_input_data_fetcher_win.h
diff options
context:
space:
mode:
authorbajones <bajones@chromium.org>2016-01-22 15:39:59 -0800
committerCommit bot <commit-bot@chromium.org>2016-01-22 23:41:51 +0000
commit618039679323b6fc09e2146768f121661b0cdd41 (patch)
treeacacaeacf42a8cb4f229af8e6c370139286347c0 /content/browser/gamepad/raw_input_data_fetcher_win.h
parent7246e45b7da6c14b1384658481ec49b45b5b488c (diff)
downloadchromium_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.h23
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|.