mirror of
https://github.com/Ryujinx/SDL.git
synced 2025-01-10 20:45:40 +00:00
Note the Google Stadia controller doesn't support rumble over Bluetooth
(cherry picked from commit 50575ed2233b9924198e10c9a261c10323d9089e)
This commit is contained in:
parent
71fb4e3d76
commit
3fb9118cb6
|
@ -77,6 +77,15 @@ static SDL_bool HIDAPI_DriverStadia_InitDevice(SDL_HIDAPI_Device *device)
|
|||
}
|
||||
device->context = ctx;
|
||||
|
||||
/* Check whether this is connected via USB or Bluetooth */
|
||||
{
|
||||
Uint8 rumble_packet[] = { 0x05, 0x00, 0x00, 0x00, 0x00 };
|
||||
|
||||
if (SDL_hid_write(device->dev, rumble_packet, sizeof(rumble_packet)) < 0) {
|
||||
device->is_bluetooth = SDL_TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
device->type = SDL_CONTROLLER_TYPE_GOOGLE_STADIA;
|
||||
HIDAPI_SetDeviceName(device, "Google Stadia Controller");
|
||||
|
||||
|
@ -112,6 +121,10 @@ static int HIDAPI_DriverStadia_RumbleJoystick(SDL_HIDAPI_Device *device, SDL_Joy
|
|||
{
|
||||
Uint8 rumble_packet[] = { 0x05, 0x00, 0x00, 0x00, 0x00 };
|
||||
|
||||
if (device->is_bluetooth) {
|
||||
return SDL_Unsupported();
|
||||
}
|
||||
|
||||
rumble_packet[1] = (low_frequency_rumble & 0xFF);
|
||||
rumble_packet[2] = (low_frequency_rumble >> 8);
|
||||
rumble_packet[3] = (high_frequency_rumble & 0xFF);
|
||||
|
@ -130,7 +143,12 @@ static int HIDAPI_DriverStadia_RumbleJoystickTriggers(SDL_HIDAPI_Device *device,
|
|||
|
||||
static Uint32 HIDAPI_DriverStadia_GetJoystickCapabilities(SDL_HIDAPI_Device *device, SDL_Joystick *joystick)
|
||||
{
|
||||
return SDL_JOYCAP_RUMBLE;
|
||||
Uint32 caps = 0;
|
||||
|
||||
if (!device->is_bluetooth) {
|
||||
caps |= SDL_JOYCAP_RUMBLE;
|
||||
}
|
||||
return caps;
|
||||
}
|
||||
|
||||
static int HIDAPI_DriverStadia_SetJoystickLED(SDL_HIDAPI_Device *device, SDL_Joystick *joystick, Uint8 red, Uint8 green, Uint8 blue)
|
||||
|
|
Loading…
Reference in a new issue