Mercurial > sdl-ios-xcode
changeset 2485:67978eea6d10 gsoc2008_force_feedback
Added SDL_HapticStopEffect().
author | Edgar Simo <bobbens@gmail.com> |
---|---|
date | Tue, 01 Jul 2008 14:31:04 +0000 |
parents | 666472fd4cb0 |
children | 24dd8b8669fa |
files | include/SDL_haptic.h src/haptic/SDL_haptic.c src/haptic/SDL_syshaptic.h src/haptic/linux/SDL_syshaptic.c |
diffstat | 4 files changed, 50 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/include/SDL_haptic.h Tue Jul 01 14:21:09 2008 +0000 +++ b/include/SDL_haptic.h Tue Jul 01 14:31:04 2008 +0000 @@ -245,7 +245,15 @@ extern DECLSPEC int SDL_HapticRunEffect(SDL_Haptic * haptic, int effect); /* - * Destroys a haptic effect on the device. + * Stops the haptic effect on it's assosciated haptic device. + * + * Returns 0 on success or -1 on failure. + */ +extern DECLSPEC int SDL_HapticStopEffect(SDL_Haptic * haptic, int effect); + +/* + * Destroys a haptic effect on the device. This will stop the effect if it's + * running. */ extern DECLSPEC void SDL_HapticDestroyEffect(SDL_Haptic * haptic, int effect);
--- a/src/haptic/SDL_haptic.c Tue Jul 01 14:21:09 2008 +0000 +++ b/src/haptic/SDL_haptic.c Tue Jul 01 14:31:04 2008 +0000 @@ -307,6 +307,24 @@ } /* + * Stops the haptic effect on the device. + */ +int +SDL_HapticStopEffect(SDL_Haptic * haptic, int effect) +{ + if (!ValidHaptic(&haptic) || !ValidEffect(haptic,effect)) { + return -1; + } + + /* Stop the effect */ + if (SDL_SYS_HapticStopEffect(haptic,&haptic->effects[effect]) < 0) { + return -1; + } + + return 0; +} + +/* * Gets rid of a haptic effect. */ void
--- a/src/haptic/SDL_syshaptic.h Tue Jul 01 14:21:09 2008 +0000 +++ b/src/haptic/SDL_syshaptic.h Tue Jul 01 14:31:04 2008 +0000 @@ -56,6 +56,8 @@ struct haptic_effect * effect, SDL_HapticEffect * base); extern int SDL_SYS_HapticRunEffect(SDL_Haptic * haptic, struct haptic_effect * effect); +extern int SDL_SYS_HapticStopEffect(SDL_Haptic * haptic, + struct haptic_effect * effect); extern void SDL_SYS_HapticDestroyEffect(SDL_Haptic * haptic, struct haptic_effect * effect); extern int SDL_SYS_HapticSetGain(SDL_Haptic * haptic, int gain);
--- a/src/haptic/linux/SDL_syshaptic.c Tue Jul 01 14:21:09 2008 +0000 +++ b/src/haptic/linux/SDL_syshaptic.c Tue Jul 01 14:31:04 2008 +0000 @@ -495,6 +495,27 @@ /* + * Stops an effect. + */ +int +SDL_SYS_HapticStopEffect(SDL_Haptic * haptic, struct haptic_effect * effect) +{ + struct input_event stop; + + stop.type = EV_FF; + stop.code = effect->hweffect->effect.id; + stop.value = 0; + + if (write(haptic->hwdata->fd, (const void*) &stop, sizeof(stop)) < 0) { + SDL_SetError("Unable to stop the haptic effect."); + return -1; + } + + return 0; +} + + +/* * Frees the effect */ void