Mercurial > sdl-ios-xcode
diff src/haptic/darwin/SDL_syshaptic.c @ 2557:30778d9d8bff gsoc2008_force_feedback
Made envelopes behave correctly with length of 0.
author | Edgar Simo <bobbens@gmail.com> |
---|---|
date | Wed, 30 Jul 2008 15:08:44 +0000 |
parents | fe346eddd3fb |
children | 42b682e85546 |
line wrap: on
line diff
--- a/src/haptic/darwin/SDL_syshaptic.c Wed Jul 30 15:00:45 2008 +0000 +++ b/src/haptic/darwin/SDL_syshaptic.c Wed Jul 30 15:08:44 2008 +0000 @@ -662,10 +662,20 @@ } /* Envelope */ - envelope->dwAttackLevel = CONVERT(hap_constant->attack_level); - envelope->dwAttackTime = hap_constant->attack_length * 1000; - envelope->dwFadeLevel = CONVERT(hap_constant->fade_level); - envelope->dwFadeTime = hap_constant->fade_length * 1000; + if (envelope->dwAttackTime == 0) { + envelope->dwAttackLevel = constant->dwMagnitude + } + 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; + } break; @@ -702,10 +712,20 @@ } /* Envelope */ - envelope->dwAttackLevel = CONVERT(hap_periodic->attack_level); - envelope->dwAttackTime = hap_periodic->attack_length * 1000; - envelope->dwFadeLevel = CONVERT(hap_periodic->fade_level); - envelope->dwFadeTime = hap_periodic->fade_length * 1000; + if (envelope->dwAttackTime == 0) { + envelope->dwAttackLevel = periodic->dwMagnitude + } + 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; + } break; @@ -745,6 +765,8 @@ } /* Envelope */ + SDL_free(dest->lpEnvelope); + dest->lpEnvelope = NULL; /* TODO Check is envelope actually used. envelope->dwAttackLevel = CONVERT(hap_condition->attack_level); envelope->dwAttackTime = hap_condition->attack_length * 1000; @@ -781,10 +803,20 @@ } /* Envelope */ - envelope->dwAttackLevel = CONVERT(hap_ramp->attack_level); - envelope->dwAttackTime = hap_ramp->attack_length * 1000; - envelope->dwFadeLevel = CONVERT(hap_ramp->fade_level); - envelope->dwFadeTime = hap_ramp->fade_length * 1000; + if (envelope->dwAttackTime == 0) { + envelope->dwAttackLevel = ramp->dwMagnitude + } + 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; + } break; @@ -820,10 +852,20 @@ } /* Envelope */ - envelope->dwAttackLevel = CONVERT(hap_custom->attack_level); - envelope->dwAttackTime = hap_custom->attack_length * 1000; - envelope->dwFadeLevel = CONVERT(hap_custom->fade_level); - envelope->dwFadeTime = hap_custom->fade_length * 1000; + if (envelope->dwAttackTime == 0) { + envelope->dwAttackLevel = custom->dwMagnitude + } + 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; + } break;