diff --git a/src/core.c b/src/core.c index 1696c41e9..b21b27ca2 100644 --- a/src/core.c +++ b/src/core.c @@ -3329,6 +3329,20 @@ static bool InitGraphicsDevice(int width, int height) #endif } +#if defined(PLATFORM_DESKTOP) + // NOTE: GLFW 3.4+ defers initialization of the Joystick subsystem on the + // first call to any Joystick related functions. Forcing this + // initialization here avoids doing it on `PollInputEvents` called by + // `EndDrawing` after first frame has been just drawn. The initialization + // will still happen and possible delays still occur, but before the window + // is shown, which is a nicer experience. + // Ref: https://github.com/raysan5/raylib/issues/1554 + if (MAX_GAMEPADS > 0) + { + glfwSetJoystickCallback(NULL); + } +#endif // PLATFORM_DESKTOP + if (CORE.Window.fullscreen) { // remember center for switchinging from fullscreen to window