From dec7875a6e23212021e4d9080330a42832dfe02a Mon Sep 17 00:00:00 2001
From: Edward Rudd <urkle@outoforder.cc>
Date: Tue, 15 Jun 2021 01:40:19 +0000
Subject: [PATCH] update SDL soruce to 2.0.14
---
source/src/joystick/hidapi/SDL_hidapi_xbox360w.c | 43 ++++++++++++++++++++++++++++++++++++++++---
1 files changed, 40 insertions(+), 3 deletions(-)
diff --git a/source/src/joystick/hidapi/SDL_hidapi_xbox360w.c b/source/src/joystick/hidapi/SDL_hidapi_xbox360w.c
index 13dca5e..40dcae6 100644
--- a/source/src/joystick/hidapi/SDL_hidapi_xbox360w.c
+++ b/source/src/joystick/hidapi/SDL_hidapi_xbox360w.c
@@ -23,7 +23,6 @@
#ifdef SDL_JOYSTICK_HIDAPI
#include "SDL_hints.h"
-#include "SDL_log.h"
#include "SDL_events.h"
#include "SDL_timer.h"
#include "SDL_joystick.h"
@@ -34,6 +33,9 @@
#ifdef SDL_JOYSTICK_HIDAPI_XBOX360
+
+/* Define this if you want to log all packets from the controller */
+/*#define DEBUG_XBOX_PROTOCOL*/
typedef struct {
@@ -126,6 +128,9 @@
static void
HIDAPI_DriverXbox360W_SetDevicePlayerIndex(SDL_HIDAPI_Device *device, SDL_JoystickID instance_id, int player_index)
{
+ if (!device->dev) {
+ return;
+ }
SetSlotLED(device->dev, (player_index % 4));
}
@@ -137,7 +142,7 @@
SDL_zeroa(ctx->last_state);
/* Initialize the joystick capabilities */
- joystick->nbuttons = SDL_CONTROLLER_BUTTON_MAX;
+ joystick->nbuttons = 15;
joystick->naxes = SDL_CONTROLLER_AXIS_MAX;
joystick->epowerlevel = SDL_JOYSTICK_POWER_UNKNOWN;
@@ -156,6 +161,31 @@
return SDL_SetError("Couldn't send rumble packet");
}
return 0;
+}
+
+static int
+HIDAPI_DriverXbox360W_RumbleJoystickTriggers(SDL_HIDAPI_Device *device, SDL_Joystick *joystick, Uint16 left_rumble, Uint16 right_rumble)
+{
+ return SDL_Unsupported();
+}
+
+static SDL_bool
+HIDAPI_DriverXbox360W_HasJoystickLED(SDL_HIDAPI_Device *device, SDL_Joystick *joystick)
+{
+ /* Doesn't have an RGB LED, so don't return true here */
+ return SDL_FALSE;
+}
+
+static int
+HIDAPI_DriverXbox360W_SetJoystickLED(SDL_HIDAPI_Device *device, SDL_Joystick *joystick, Uint8 red, Uint8 green, Uint8 blue)
+{
+ return SDL_Unsupported();
+}
+
+static int
+HIDAPI_DriverXbox360W_SetJoystickSensorsEnabled(SDL_HIDAPI_Device *device, SDL_Joystick *joystick, SDL_bool enabled)
+{
+ return SDL_Unsupported();
}
static void
@@ -220,6 +250,9 @@
}
while ((size = hid_read_timeout(device->dev, data, sizeof(data), 0)) > 0) {
+#ifdef DEBUG_XBOX_PROTOCOL
+ HIDAPI_DumpPacket("Xbox 360 wireless packet: size = %d", data, size);
+#endif
if (size == 2 && data[0] == 0x08) {
SDL_bool connected = (data[1] & 0x80) ? SDL_TRUE : SDL_FALSE;
#ifdef DEBUG_JOYSTICK
@@ -295,8 +328,12 @@
HIDAPI_DriverXbox360W_UpdateDevice,
HIDAPI_DriverXbox360W_OpenJoystick,
HIDAPI_DriverXbox360W_RumbleJoystick,
+ HIDAPI_DriverXbox360W_RumbleJoystickTriggers,
+ HIDAPI_DriverXbox360W_HasJoystickLED,
+ HIDAPI_DriverXbox360W_SetJoystickLED,
+ HIDAPI_DriverXbox360W_SetJoystickSensorsEnabled,
HIDAPI_DriverXbox360W_CloseJoystick,
- HIDAPI_DriverXbox360W_FreeDevice
+ HIDAPI_DriverXbox360W_FreeDevice,
};
#endif /* SDL_JOYSTICK_HIDAPI_XBOX360 */
--
Gitblit v1.9.3