changeset 2561:3696b9ce8a37 gsoc2008_force_feedback

Correctness patch, it's up to the SDL_haptic.c to clean up effects, not SDL_syshaptic.c.
author Edgar Simo <bobbens@gmail.com>
date Thu, 31 Jul 2008 09:45:27 +0000
parents 2274406ba792
children c284ce0cd8e0
files src/haptic/SDL_haptic.c src/haptic/darwin/SDL_syshaptic.c src/haptic/linux/SDL_syshaptic.c src/haptic/win32/SDL_syshaptic.c
diffstat 4 files changed, 12 insertions(+), 25 deletions(-) [+]
line wrap: on
line diff
--- a/src/haptic/SDL_haptic.c	Thu Jul 31 09:02:43 2008 +0000
+++ b/src/haptic/SDL_haptic.c	Thu Jul 31 09:45:27 2008 +0000
@@ -322,6 +322,7 @@
    /* Remove from the list */
    for (i = 0; SDL_haptics[i]; ++i) {
       if (haptic == SDL_haptics[i]) {
+         SDL_haptics[i] = NULL;
          SDL_memcpy(&SDL_haptics[i], &SDL_haptics[i + 1],
                (SDL_numhaptics - i) * sizeof(haptic));
          break;
--- a/src/haptic/darwin/SDL_syshaptic.c	Thu Jul 31 09:02:43 2008 +0000
+++ b/src/haptic/darwin/SDL_syshaptic.c	Thu Jul 31 09:45:27 2008 +0000
@@ -470,19 +470,11 @@
 void
 SDL_SYS_HapticClose(SDL_Haptic * haptic)
 {
-   int i;
-
    if (haptic->hwdata) {
 
-      /* Free the effects. */
-      for (i=0; i<haptic->neffects; i++) {        
-         if (haptic->effects[i].hweffect != NULL) {
-            SDL_SYS_HapticFreeFFEFFECT(&haptic->effects[i].hweffect->effect,
-                                       haptic->effects[i].effect.type);
-            SDL_free(haptic->effects[i].hweffect);
-         } 
-      }    
+      /* Free Effects. */
       SDL_free(haptic->effects);
+      haptic->effects = NULL;
       haptic->neffects = 0;
 
       /* Clean up */
--- a/src/haptic/linux/SDL_syshaptic.c	Thu Jul 31 09:02:43 2008 +0000
+++ b/src/haptic/linux/SDL_syshaptic.c	Thu Jul 31 09:45:27 2008 +0000
@@ -423,12 +423,17 @@
 {
    if (haptic->hwdata) {
 
+      /* Free effects. */
+      SDL_free(haptic->effects);
+      haptic->effects = NULL;
+      haptic->neffects = 0;
+
       /* Clean up */
       close(haptic->hwdata->fd);
 
       /* Free */
-      SDL_free(haptic->hwdata);
-      SDL_free(haptic->effects);
+      SDL_free(haptic->hwdata);                                           
+      haptic->hwdata = NULL;  
    }
 
    /* Clear the rest. */
--- a/src/haptic/win32/SDL_syshaptic.c	Thu Jul 31 09:02:43 2008 +0000
+++ b/src/haptic/win32/SDL_syshaptic.c	Thu Jul 31 09:45:27 2008 +0000
@@ -361,9 +361,6 @@
    return 0;
    
    /* Error handling */
-open_err:
-   IDirectInputDevice_Release(device);
-   goto creat_err;
 acquire_err:
    IDirectInputDevice2_Unacquire(haptic->hwdata->device);
 query_err:
@@ -435,19 +432,11 @@
 void
 SDL_SYS_HapticClose(SDL_Haptic * haptic)
 {
-   int i;
-
    if (haptic->hwdata) {
 
-      /* Free the effects. */
-      for (i=0; i<haptic->neffects; i++) {        
-         if (haptic->effects[i].hweffect != NULL) {
-            SDL_SYS_HapticFreeFFEFFECT( &haptic->effects[i].hweffect->effect,
-                                        haptic->effects[i].effect.type );
-            SDL_free(haptic->effects[i].hweffect);
-         } 
-      }    
+      /* Free effects. */
       SDL_free(haptic->effects);
+      haptic->effects = NULL;
       haptic->neffects = 0;
 
       /* Clean up */