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

Side by Side Diff: content/browser/gamepad/gamepad_platform_data_fetcher_win.cc

Issue 165983005: Updating Gamepad API to match latest spec (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: ifdef-gaurds Created 6 years, 10 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/gamepad/gamepad_platform_data_fetcher_win.h" 5 #include "content/browser/gamepad/gamepad_platform_data_fetcher_win.h"
6 6
7 #include "base/debug/trace_event.h" 7 #include "base/debug/trace_event.h"
8 #include "base/strings/stringprintf.h" 8 #include "base/strings/stringprintf.h"
9 #include "base/win/windows_version.h" 9 #include "base/win/windows_version.h"
10 #include "content/common/gamepad_hardware_buffer.h" 10 #include "content/common/gamepad_hardware_buffer.h"
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
131 WebGamepad& pad = pads->items[pad_index]; 131 WebGamepad& pad = pads->items[pad_index];
132 pad.connected = true; 132 pad.connected = true;
133 PadState& state = pad_state_[pad_index]; 133 PadState& state = pad_state_[pad_index];
134 state.status = RAWINPUT_CONNECTED; 134 state.status = RAWINPUT_CONNECTED;
135 state.raw_input_handle = gamepad->handle; 135 state.raw_input_handle = gamepad->handle;
136 136
137 std::string vendor = base::StringPrintf("%04x", gamepad->vendor_id); 137 std::string vendor = base::StringPrintf("%04x", gamepad->vendor_id);
138 std::string product = base::StringPrintf("%04x", gamepad->product_id); 138 std::string product = base::StringPrintf("%04x", gamepad->product_id);
139 state.mapper = GetGamepadStandardMappingFunction(vendor, product); 139 state.mapper = GetGamepadStandardMappingFunction(vendor, product);
140 140
141 #ifdef ENABLE_NEW_GAMEPAD_API
142 swprintf(pad.id, WebGamepad::idLengthCap,
143 L"%ls (Vendor: %04x Product: %04x)",
144 gamepad->id, gamepad->vendor_id, gamepad->product_id);
145
146 if (state.mapper)
147 swprintf(pad.mapping, WebGamepad::mappingLengthCap, L"standard");
148 else
149 pad.mapping[0] = 0;
150 #else
141 swprintf(pad.id, WebGamepad::idLengthCap, 151 swprintf(pad.id, WebGamepad::idLengthCap,
142 L"%ls (%lsVendor: %04x Product: %04x)", 152 L"%ls (%lsVendor: %04x Product: %04x)",
143 gamepad->id, state.mapper ? L"STANDARD GAMEPAD " : L"", 153 gamepad->id, state.mapper ? L"STANDARD GAMEPAD " : L"",
144 gamepad->vendor_id, gamepad->product_id); 154 gamepad->vendor_id, gamepad->product_id);
155 #endif
156
145 pads->length++; 157 pads->length++;
146 } 158 }
147 } 159 }
148 } 160 }
149 161
150 162
151 void GamepadPlatformDataFetcherWin::GetGamepadData(WebGamepads* pads, 163 void GamepadPlatformDataFetcherWin::GetGamepadData(WebGamepads* pads,
152 bool devices_changed_hint) { 164 bool devices_changed_hint) {
153 TRACE_EVENT0("GAMEPAD", "GetGamepadData"); 165 TRACE_EVENT0("GAMEPAD", "GetGamepadData");
154 166
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
194 WebGamepad* pad) const { 206 WebGamepad* pad) const {
195 DCHECK(pad); 207 DCHECK(pad);
196 TRACE_EVENT1("GAMEPAD", "GetXInputPadConnectivity", "id", i); 208 TRACE_EVENT1("GAMEPAD", "GetXInputPadConnectivity", "id", i);
197 XINPUT_CAPABILITIES caps; 209 XINPUT_CAPABILITIES caps;
198 DWORD res = xinput_get_capabilities_(i, XINPUT_FLAG_GAMEPAD, &caps); 210 DWORD res = xinput_get_capabilities_(i, XINPUT_FLAG_GAMEPAD, &caps);
199 if (res == ERROR_DEVICE_NOT_CONNECTED) { 211 if (res == ERROR_DEVICE_NOT_CONNECTED) {
200 pad->connected = false; 212 pad->connected = false;
201 return false; 213 return false;
202 } else { 214 } else {
203 pad->connected = true; 215 pad->connected = true;
216 #ifdef ENABLE_NEW_GAMEPAD_API
217 swprintf(pad->id, WebGamepad::idLengthCap, L"Xbox 360 Controller (XInput)");
218 swprintf(pad->mapping, WebGamepad::mappingLengthCap, L"standard");
219 #else
204 swprintf(pad->id, 220 swprintf(pad->id,
205 WebGamepad::idLengthCap, 221 WebGamepad::idLengthCap,
206 L"Xbox 360 Controller (XInput STANDARD %ls)", 222 L"Xbox 360 Controller (XInput STANDARD %ls)",
207 GamepadSubTypeName(caps.SubType)); 223 GamepadSubTypeName(caps.SubType));
224 #endif
208 return true; 225 return true;
209 } 226 }
210 } 227 }
211 228
212 void GamepadPlatformDataFetcherWin::GetXInputPadData( 229 void GamepadPlatformDataFetcherWin::GetXInputPadData(
213 int i, 230 int i,
214 WebGamepad* pad) { 231 WebGamepad* pad) {
215 XINPUT_STATE state; 232 XINPUT_STATE state;
216 memset(&state, 0, sizeof(XINPUT_STATE)); 233 memset(&state, 0, sizeof(XINPUT_STATE));
217 TRACE_EVENT_BEGIN1("GAMEPAD", "XInputGetState", "id", i); 234 TRACE_EVENT_BEGIN1("GAMEPAD", "XInputGetState", "id", i);
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
294 return false; 311 return false;
295 xinput_get_state_ = reinterpret_cast<XInputGetStateFunc>( 312 xinput_get_state_ = reinterpret_cast<XInputGetStateFunc>(
296 xinput_dll_.GetFunctionPointer("XInputGetState")); 313 xinput_dll_.GetFunctionPointer("XInputGetState"));
297 if (!xinput_get_state_) 314 if (!xinput_get_state_)
298 return false; 315 return false;
299 xinput_enable_(true); 316 xinput_enable_(true);
300 return true; 317 return true;
301 } 318 }
302 319
303 } // namespace content 320 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698