[WINMM] Sync wine commit ebae298 as a fix for CORE-15336 (#1031)
[reactos.git] / dll / win32 / winmm / joystick.c
index ed6054b..92bd48d 100644 (file)
@@ -55,12 +55,21 @@ static      WINE_JOYSTICK   JOY_Sticks[MAXJOYSTICK];
  */
 static BOOL JOY_LoadDriver(DWORD dwJoyID)
 {
-    if (dwJoyID >= MAXJOYSTICK)
+    static BOOL winejoystick_missing = FALSE;
+
+    if (dwJoyID >= MAXJOYSTICK || winejoystick_missing)
        return FALSE;
     if (JOY_Sticks[dwJoyID].hDriver)
        return TRUE;
 
     JOY_Sticks[dwJoyID].hDriver = OpenDriverA("winejoystick.drv", 0, dwJoyID);
+
+    if (!JOY_Sticks[dwJoyID].hDriver)
+    {
+        /* The default driver is missing, don't attempt to load it again */
+        winejoystick_missing = TRUE;
+    }
+
     return (JOY_Sticks[dwJoyID].hDriver != 0);
 }