Initialize udev before joystick manual scan so class lookup works
LINUX_JoystickInit does a manual scan first so devices are sorted. If SDL_UDEV_Init hasn't run by then, then the product info cannot be looked up by SDL_UDEV_GetProductInfo and the initial-plugged- in-device classification falls back to heuristic guessing. (cherry picked from commit 0963c11af84da275208edc00b3b8c2e12be396b6)
This commit is contained in:
committed by
Sam Lantinga
parent
d42d661498
commit
0ab5a8a413
@@ -1037,6 +1037,9 @@ static SDL_bool LINUX_JoystickIsDevicePresent(Uint16 vendor_id, Uint16 product_i
|
|||||||
static int LINUX_JoystickInit(void)
|
static int LINUX_JoystickInit(void)
|
||||||
{
|
{
|
||||||
const char *devices = SDL_GetHint(SDL_HINT_JOYSTICK_DEVICE);
|
const char *devices = SDL_GetHint(SDL_HINT_JOYSTICK_DEVICE);
|
||||||
|
#ifdef SDL_USE_LIBUDEV
|
||||||
|
int udev_status = SDL_UDEV_Init();
|
||||||
|
#endif
|
||||||
|
|
||||||
SDL_classic_joysticks = SDL_GetHintBoolean(SDL_HINT_JOYSTICK_LINUX_CLASSIC, SDL_FALSE);
|
SDL_classic_joysticks = SDL_GetHintBoolean(SDL_HINT_JOYSTICK_LINUX_CLASSIC, SDL_FALSE);
|
||||||
|
|
||||||
@@ -1087,7 +1090,7 @@ static int LINUX_JoystickInit(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (enumeration_method == ENUMERATION_LIBUDEV) {
|
if (enumeration_method == ENUMERATION_LIBUDEV) {
|
||||||
if (SDL_UDEV_Init() == 0) {
|
if (udev_status == 0) {
|
||||||
/* Set up the udev callback */
|
/* Set up the udev callback */
|
||||||
if (SDL_UDEV_AddCallback(joystick_udev_callback) < 0) {
|
if (SDL_UDEV_AddCallback(joystick_udev_callback) < 0) {
|
||||||
SDL_UDEV_Quit();
|
SDL_UDEV_Quit();
|
||||||
|
|||||||
Reference in New Issue
Block a user