From 8a56d7c0995cee371c2177a18f7989eea4c9bb97 Mon Sep 17 00:00:00 2001 From: Edgar Simo Date: Thu, 31 Jul 2008 10:25:49 +0000 Subject: [PATCH] More verbose about envelopes. --- include/SDL_haptic.h | 3 +++ src/haptic/darwin/SDL_syshaptic.c | 41 +++++++++---------------------- 2 files changed, 15 insertions(+), 29 deletions(-) diff --git a/include/SDL_haptic.h b/include/SDL_haptic.h index 76cb80b05..b584d28f6 100644 --- a/include/SDL_haptic.h +++ b/include/SDL_haptic.h @@ -649,6 +649,9 @@ typedef struct SDL_HapticCustom { * use them if possible. Buttons start at index 1 instead of index 0 like * they joystick. * + * If both attack_length and fade_level are 0, the envelope is not used, + * otherwise both values are used. + * * Common parts: * \code * // Replay - All effects have this diff --git a/src/haptic/darwin/SDL_syshaptic.c b/src/haptic/darwin/SDL_syshaptic.c index 326db222b..f019b9056 100644 --- a/src/haptic/darwin/SDL_syshaptic.c +++ b/src/haptic/darwin/SDL_syshaptic.c @@ -655,17 +655,13 @@ SDL_SYS_ToFFEFFECT( SDL_Haptic * haptic, FFEFFECT * dest, SDL_HapticEffect * src } /* Envelope */ - if (envelope->dwAttackTime == 0) { - envelope->dwAttackLevel = constant->dwMagnitude + if ((envelope->dwAttackTime == 0) && (envelope->dwFadeTime == 0)) { + SDL_free(envelope); + dest->lpEnvelope = NULL; } else { envelope->dwAttackLevel = CONVERT(hap_constant->attack_level); envelope->dwAttackTime = hap_constant->attack_length * 1000; - } - if (envelope->dwFadeTime == 0) { - envelope->dwFadeLevel = constant->dwMagnitude - } - else { envelope->dwFadeLevel = CONVERT(hap_constant->fade_level); envelope->dwFadeTime = hap_constant->fade_length * 1000; } @@ -705,17 +701,13 @@ SDL_SYS_ToFFEFFECT( SDL_Haptic * haptic, FFEFFECT * dest, SDL_HapticEffect * src } /* Envelope */ - if (envelope->dwAttackTime == 0) { - envelope->dwAttackLevel = periodic->dwMagnitude + if ((envelope->dwAttackTime == 0) && (envelope->dwFadeTime == 0)) { + SDL_free(envelope); + dest->lpEnvelope = NULL; } else { envelope->dwAttackLevel = CONVERT(hap_periodic->attack_level); envelope->dwAttackTime = hap_periodic->attack_length * 1000; - } - if (envelope->dwFadeTime == 0) { - envelope->dwFadeLevel = periodic->dwMagnitude - } - else { envelope->dwFadeLevel = CONVERT(hap_periodic->fade_level); envelope->dwFadeTime = hap_periodic->fade_length * 1000; } @@ -796,17 +788,12 @@ SDL_SYS_ToFFEFFECT( SDL_Haptic * haptic, FFEFFECT * dest, SDL_HapticEffect * src } /* Envelope */ - if (envelope->dwAttackTime == 0) { - envelope->dwAttackLevel = ramp->dwMagnitude - } + if ((envelope->dwAttackTime == 0) && (envelope->dwFadeTime == 0)) { + SDL_free(envelope); + dest->lpEnvelope = NULL; else { envelope->dwAttackLevel = CONVERT(hap_ramp->attack_level); envelope->dwAttackTime = hap_ramp->attack_length * 1000; - } - if (envelope->dwFadeTime == 0) { - envelope->dwFadeLevel = ramp->dwMagnitude - } - else { envelope->dwFadeLevel = CONVERT(hap_ramp->fade_level); envelope->dwFadeTime = hap_ramp->fade_length * 1000; } @@ -845,17 +832,13 @@ SDL_SYS_ToFFEFFECT( SDL_Haptic * haptic, FFEFFECT * dest, SDL_HapticEffect * src } /* Envelope */ - if (envelope->dwAttackTime == 0) { - envelope->dwAttackLevel = custom->dwMagnitude + if ((envelope->dwAttackTime == 0) && (envelope->dwFadeTime == 0)) { + SDL_free(envelope); + dest->lpEnvelope = NULL; } else { envelope->dwAttackLevel = CONVERT(hap_custom->attack_level); envelope->dwAttackTime = hap_custom->attack_length * 1000; - } - if (envelope->dwFadeTime == 0) { - envelope->dwFadeLevel = custom->dwMagnitude - } - else { envelope->dwFadeLevel = CONVERT(hap_custom->fade_level); envelope->dwFadeTime = hap_custom->fade_length * 1000; }