Browse Source

Fixed bug 2953 - Crash due to a bad cleanup in the SDL_SYS_HapticQuit function

Technically this is caused by the haptic devices not being closed at quit time, which we need to fix anyway, but this is a bandaid for now.
Sam Lantinga 9 years ago
parent
commit
e3df6d5e66

+ 1 - 0
src/haptic/SDL_haptic.c

@@ -845,3 +845,4 @@ SDL_HapticRumbleStop(SDL_Haptic * haptic)
     return SDL_HapticStopEffect(haptic, haptic->rumble_id);
 }
 
+/* vi: set ts=4 sw=4 expandtab: */

+ 0 - 1
src/haptic/SDL_syshaptic.h

@@ -206,4 +206,3 @@ extern int SDL_SYS_HapticStopAll(SDL_Haptic * haptic);
 #endif /* _SDL_syshaptic_h */
 
 /* vi: set ts=4 sw=4 expandtab: */
-

+ 5 - 1
src/haptic/darwin/SDL_syshaptic.c

@@ -683,7 +683,10 @@ SDL_SYS_HapticQuit(void)
         IOObjectRelease(item->dev);
         SDL_free(item);
     }
+
     numhaptics = -1;
+    SDL_hapticlist = NULL;
+    SDL_hapticlist_tail = NULL;
 }
 
 
@@ -1409,5 +1412,6 @@ SDL_SYS_HapticStopAll(SDL_Haptic * haptic)
     return 0;
 }
 
-
 #endif /* SDL_HAPTIC_IOKIT */
+
+/* vi: set ts=4 sw=4 expandtab: */

+ 2 - 0
src/haptic/dummy/SDL_syshaptic.c

@@ -182,3 +182,5 @@ SDL_SYS_HapticStopAll(SDL_Haptic * haptic)
 }
 
 #endif /* SDL_HAPTIC_DUMMY || SDL_HAPTIC_DISABLED */
+
+/* vi: set ts=4 sw=4 expandtab: */

+ 2 - 1
src/haptic/linux/SDL_syshaptic.c

@@ -1162,5 +1162,6 @@ SDL_SYS_HapticStopAll(SDL_Haptic * haptic)
     return 0;
 }
 
-
 #endif /* SDL_HAPTIC_LINUX */
+
+/* vi: set ts=4 sw=4 expandtab: */

+ 4 - 0
src/haptic/windows/SDL_windowshaptic.c

@@ -272,6 +272,10 @@ SDL_SYS_HapticQuit(void)
 
     SDL_XINPUT_HapticQuit();
     SDL_DINPUT_HapticQuit();
+
+    numhaptics = 0;
+    SDL_hapticlist = NULL;
+    SDL_hapticlist_tail = NULL;
 }
 
 /*