moved clearing joystick state from closing to initializing joysticks
authorHolger Schemel <info@artsoft.org>
Mon, 17 Jul 2017 16:16:21 +0000 (18:16 +0200)
committerHolger Schemel <info@artsoft.org>
Mon, 17 Jul 2017 16:16:21 +0000 (18:16 +0200)
src/libgame/sdl.c
src/libgame/sdl.h
src/libgame/system.c
src/libgame/system.h

index 8751f1b999dfa4de510e8eacf78aee61a9684e11..f94193127f5eafb7cf5127d9bd00809c6ce6bc26 100644 (file)
@@ -2601,6 +2601,21 @@ static int sdl_js_axis[MAX_PLAYERS][2];
 static int sdl_js_button[MAX_PLAYERS][2];
 static boolean sdl_is_controller[MAX_PLAYERS];
 
+void SDLClearJoystickState()
+{
+  int i, j;
+
+  for (i = 0; i < MAX_PLAYERS; i++)
+  {
+    for (j = 0; j < 2; j++)
+    {
+      sdl_js_axis_raw[i][j] = -1;
+      sdl_js_axis[i][j] = 0;
+      sdl_js_button[i][j] = 0;
+    }
+  }
+}
+
 static boolean SDLOpenJoystick(int nr)
 {
   if (nr < 0 || nr >= MAX_PLAYERS)
@@ -2648,13 +2663,6 @@ static void SDLCloseJoystick(int nr)
 #endif
 
   sdl_joystick[nr] = NULL;
-
-  sdl_js_axis_raw[nr][0] = -1;
-  sdl_js_axis_raw[nr][1] = -1;
-  sdl_js_axis[nr][0] = 0;
-  sdl_js_axis[nr][1] = 0;
-  sdl_js_button[nr][0] = 0;
-  sdl_js_button[nr][1] = 0;
 }
 
 boolean SDLCheckJoystickOpened(int nr)
@@ -2935,6 +2943,8 @@ void SDLInitJoysticks()
     else if (print_warning)
       Error(ERR_WARN, "cannot open joystick %d", i);
   }
+
+  SDLClearJoystickState();
 }
 
 boolean SDLReadJoystick(int nr, int *x, int *y, boolean *b1, boolean *b2)
index 590dadc82d8f4a068fdc10e24f4f20d17ff20e8b..5391b683d5cbec0da588b93a968e780c048cb484 100644 (file)
@@ -491,6 +491,7 @@ void HandleJoystickEvent(Event *);
 void SDLInitJoysticks(void);
 boolean SDLReadJoystick(int, int *, int *, boolean *, boolean *);
 boolean SDLCheckJoystickOpened(int);
+void SDLClearJoystickState();
 
 void PrepareFadeBitmap(int);
 
index 2b283c1a0c5d6813b7b533d30a1c10b1c66f21d6..4d4c448f486755e90a03f97dcc6608d1d3ef1793 100644 (file)
@@ -1645,3 +1645,8 @@ boolean CheckJoystickOpened(int nr)
 {
   return SDLCheckJoystickOpened(nr);
 }
+
+void ClearJoystickState()
+{
+  SDLClearJoystickState();
+}
index 1b1dc2a453b5f64d73ba4b922ee4cb6d73ddecfb..e5c96d316eb7b89aa1394a712d3199ba14a67ddd 100644 (file)
@@ -1549,5 +1549,6 @@ boolean CheckCloseWindowEvent(ClientMessageEvent *);
 void InitJoysticks();
 boolean ReadJoystick(int, int *, int *, boolean *, boolean *);
 boolean CheckJoystickOpened(int);
+void ClearJoystickState();
 
 #endif /* SYSTEM_H */