SDL: Minor tweaks

From b7fddb4c0ea2a7d4fcf512ca2ddfd82afd13d6a5 Mon Sep 17 00:00:00 2001
From: Sam Lantinga <[EMAIL REDACTED]>
Date: Mon, 26 Sep 2022 14:39:51 -0700
Subject: [PATCH] Minor tweaks

---
 src/joystick/hidapi/SDL_hidapi_ps4.c     | 4 ++--
 src/joystick/hidapi/SDL_hidapi_ps5.c     | 4 ++--
 src/joystick/hidapi/SDL_hidapi_switch.c  | 4 ++--
 src/joystick/hidapi/SDL_hidapijoystick.c | 8 ++++++++
 4 files changed, 14 insertions(+), 6 deletions(-)

diff --git a/src/joystick/hidapi/SDL_hidapi_ps4.c b/src/joystick/hidapi/SDL_hidapi_ps4.c
index 6925be4ae59..c9c24a3817b 100644
--- a/src/joystick/hidapi/SDL_hidapi_ps4.c
+++ b/src/joystick/hidapi/SDL_hidapi_ps4.c
@@ -958,8 +958,8 @@ HIDAPI_DriverPS4_UpdateDevice(SDL_HIDAPI_Device *device)
     int packet_count = 0;
 
     /* Reconnect the Bluetooth device once the USB device is gone */
-    if (device->is_bluetooth &&
-        device->num_joysticks == 0 &&
+    if (device->num_joysticks == 0 &&
+        device->is_bluetooth &&
         !HIDAPI_HasConnectedUSBDevice(device->serial)) {
         HIDAPI_JoystickConnected(device, NULL);
     }
diff --git a/src/joystick/hidapi/SDL_hidapi_ps5.c b/src/joystick/hidapi/SDL_hidapi_ps5.c
index 390a9c20ef3..423d4e9edb9 100644
--- a/src/joystick/hidapi/SDL_hidapi_ps5.c
+++ b/src/joystick/hidapi/SDL_hidapi_ps5.c
@@ -1266,8 +1266,8 @@ HIDAPI_DriverPS5_UpdateDevice(SDL_HIDAPI_Device *device)
     int packet_count = 0;
 
     /* Reconnect the Bluetooth device once the USB device is gone */
-    if (device->is_bluetooth &&
-        device->num_joysticks == 0 &&
+    if (device->num_joysticks == 0 &&
+        device->is_bluetooth &&
         !HIDAPI_HasConnectedUSBDevice(device->serial)) {
         HIDAPI_JoystickConnected(device, NULL);
     }
diff --git a/src/joystick/hidapi/SDL_hidapi_switch.c b/src/joystick/hidapi/SDL_hidapi_switch.c
index b2cbcd1b188..86f8638d3c1 100644
--- a/src/joystick/hidapi/SDL_hidapi_switch.c
+++ b/src/joystick/hidapi/SDL_hidapi_switch.c
@@ -2077,8 +2077,8 @@ HIDAPI_DriverSwitch_UpdateDevice(SDL_HIDAPI_Device *device)
     Uint32 now;
 
     /* Reconnect the Bluetooth device once the USB device is gone */
-    if (device->is_bluetooth &&
-        device->num_joysticks == 0 &&
+    if (device->num_joysticks == 0 &&
+        device->is_bluetooth &&
         !HIDAPI_HasConnectedUSBDevice(device->serial)) {
         HIDAPI_JoystickConnected(device, NULL);
     }
diff --git a/src/joystick/hidapi/SDL_hidapijoystick.c b/src/joystick/hidapi/SDL_hidapijoystick.c
index 4900b38ea36..e3db2cfc5d6 100644
--- a/src/joystick/hidapi/SDL_hidapijoystick.c
+++ b/src/joystick/hidapi/SDL_hidapijoystick.c
@@ -535,6 +535,10 @@ HIDAPI_HasConnectedUSBDevice(const char *serial)
     SDL_HIDAPI_Device *device;
 
     for (device = SDL_HIDAPI_devices; device; device = device->next) {
+        if (!device->driver) {
+            continue;
+        }
+
         if (device->is_bluetooth) {
             continue;
         }
@@ -552,6 +556,10 @@ HIDAPI_DisconnectBluetoothDevice(const char *serial)
     SDL_HIDAPI_Device *device;
 
     for (device = SDL_HIDAPI_devices; device; device = device->next) {
+        if (!device->driver) {
+            continue;
+        }
+
         if (!device->is_bluetooth) {
             continue;
         }