From 8ab9dc8b2b9ca32483f5cb5741ddc72ef22ba89b Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Wed, 3 Aug 2022 13:18:00 -0700 Subject: [PATCH] Fixed crash if Joy-Cons are disabled while a combined Joy-Cons controller is open --- src/joystick/hidapi/SDL_hidapijoystick.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/joystick/hidapi/SDL_hidapijoystick.c b/src/joystick/hidapi/SDL_hidapijoystick.c index a7ac1f8e5..188dac0da 100644 --- a/src/joystick/hidapi/SDL_hidapijoystick.c +++ b/src/joystick/hidapi/SDL_hidapijoystick.c @@ -317,6 +317,17 @@ HIDAPI_SetupDeviceDriver(SDL_HIDAPI_Device *device) } else { enabled = device->driver->enabled; } + if (device->children) { + int i; + + for (i = 0; i < device->num_children; ++i) { + SDL_HIDAPI_Device *child = device->children[i]; + if (!child->driver || !child->driver->enabled) { + enabled = SDL_FALSE; + break; + } + } + } if (!enabled) { HIDAPI_CleanupDeviceDriver(device); } @@ -813,7 +824,7 @@ check_removed: SDL_HIDAPI_Device *next = device->next; if (!device->seen || - (device->driver && device->num_joysticks == 0 && !device->dev)) { + ((device->driver || device->children) && device->num_joysticks == 0 && !device->dev)) { if (device->parent) { /* When a child device goes away, so does the parent */ int i;