Skip to content

Commit

Permalink
joystick: Ensure HIDAPI is initialized before calling it
Browse files Browse the repository at this point in the history
  • Loading branch information
aeikum committed Jul 31, 2019
1 parent e149f4c commit c172f36
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 0 deletions.
10 changes: 10 additions & 0 deletions src/joystick/hidapi/SDL_hidapijoystick.c
Expand Up @@ -99,6 +99,7 @@ static SDL_HIDAPI_DeviceDriver *SDL_HIDAPI_drivers[] = {
static int SDL_HIDAPI_numdrivers = 0;
static SDL_HIDAPI_Device *SDL_HIDAPI_devices;
static int SDL_HIDAPI_numjoysticks = 0;
static SDL_bool initialized = SDL_FALSE;

#if defined(SDL_USE_LIBUDEV)
static const SDL_UDEV_Symbols * usyms = NULL;
Expand Down Expand Up @@ -696,6 +697,10 @@ HIDAPI_JoystickInit(void)
{
int i;

if (initialized) {
return 0;
}

if (hid_init() < 0) {
SDL_SetError("Couldn't initialize hidapi");
return -1;
Expand All @@ -709,6 +714,9 @@ HIDAPI_JoystickInit(void)
SDL_HIDAPIDriverHintChanged, NULL);
HIDAPI_InitializeDiscovery();
HIDAPI_JoystickDetect();

initialized = SDL_TRUE;

return 0;
}

Expand Down Expand Up @@ -1059,6 +1067,8 @@ HIDAPI_JoystickQuit(void)
SDL_HIDAPI_numjoysticks = 0;

hid_exit();

initialized = SDL_FALSE;
}

SDL_JoystickDriver SDL_HIDAPI_JoystickDriver =
Expand Down
2 changes: 2 additions & 0 deletions src/joystick/linux/SDL_sysjoystick.c
Expand Up @@ -120,6 +120,8 @@ IsJoystick(int fd, char *namebuf, const size_t namebuflen, SDL_JoystickGUID *gui
}

#ifdef SDL_JOYSTICK_HIDAPI
SDL_HIDAPI_JoystickDriver.Init();

if (HIDAPI_IsDevicePresent(inpid.vendor, inpid.product, inpid.version)) {
/* The HIDAPI driver is taking care of this device */
return 0;
Expand Down

0 comments on commit c172f36

Please sign in to comment.