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

Unified Diff: content/browser/gamepad/raw_input_data_fetcher_win.cc

Issue 1950883002: Fix button 1 being stuck down on certain Logitech gamepads on Windows (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 7 months 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 | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/gamepad/raw_input_data_fetcher_win.cc
diff --git a/content/browser/gamepad/raw_input_data_fetcher_win.cc b/content/browser/gamepad/raw_input_data_fetcher_win.cc
index 0e53508285d76e5c169ba89e6498107b9736b952..765e0d7fa33f193f2910c768c9f2608c2866dde0 100644
--- a/content/browser/gamepad/raw_input_data_fetcher_win.cc
+++ b/content/browser/gamepad/raw_input_data_fetcher_win.cc
@@ -34,6 +34,7 @@ USHORT DeviceUsages[] = {
const uint32_t kAxisMinimumUsageNumber = 0x30;
const uint32_t kGameControlsUsagePage = 0x05;
+const uint32_t kButtonUsagePage = 0x09;
} // namespace
@@ -296,7 +297,8 @@ RawGamepadInfo* RawInputDataFetcher::ParseGamepadInfo(HANDLE hDevice) {
DCHECK_EQ(HIDP_STATUS_SUCCESS, status);
for (uint32_t i = 0; i < count; ++i) {
- if (button_caps[i].Range.UsageMin <= WebGamepad::buttonsLengthCap) {
+ if (button_caps[i].Range.UsageMin <= WebGamepad::buttonsLengthCap &&
+ button_caps[i].UsagePage == kButtonUsagePage) {
uint32_t max_index =
std::min(WebGamepad::buttonsLengthCap,
static_cast<size_t>(button_caps[i].Range.UsageMax));
@@ -395,7 +397,8 @@ void RawInputDataFetcher::UpdateGamepad(
// Set each reported button to true.
for (uint32_t j = 0; j < buttons_length; j++) {
int32_t button_index = usages[j].Usage - 1;
- if (button_index >= 0 &&
+ if (usages[j].UsagePage == kButtonUsagePage &&
+ button_index >= 0 &&
button_index <
static_cast<int>(blink::WebGamepad::buttonsLengthCap)) {
gamepad_info->buttons[button_index] = true;
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698