/* * Gets the status of a haptic effect. */ int SDL_HapticGetEffectStatus(SDL_Haptic * haptic, int effect) { if (!ValidHaptic(haptic) || !ValidEffect(haptic, effect)) { return -1; } if ((haptic->supported & SDL_HAPTIC_STATUS) == 0) { return SDL_SetError("Haptic: Device does not support status queries."); } return SDL_SYS_HapticGetEffectStatus(haptic, &haptic->effects[effect]); }
/* * Gets rid of a haptic effect. */ void SDL_HapticDestroyEffect(SDL_Haptic * haptic, int effect) { if (!ValidHaptic(haptic) || !ValidEffect(haptic, effect)) { return; } /* Not allocated */ if (haptic->effects[effect].hweffect == NULL) { return; } SDL_SYS_HapticDestroyEffect(haptic, &haptic->effects[effect]); }
/* * 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; }
/* * Runs the haptic effect on the device. */ int SDL_HapticRunEffect(SDL_Haptic * haptic, int effect, Uint32 iterations) { if (!ValidHaptic(haptic) || !ValidEffect(haptic, effect)) { return -1; } /* Run the effect */ if (SDL_SYS_HapticRunEffect(haptic, &haptic->effects[effect], iterations) < 0) { return -1; } return 0; }
/* * Updates an effect. */ int SDL_HapticUpdateEffect(SDL_Haptic * haptic, int effect, SDL_HapticEffect * data) { if (!ValidHaptic(haptic) || !ValidEffect(haptic, effect)) { return -1; } /* Can't change type dynamically. */ if (data->type != haptic->effects[effect].effect.type) { return SDL_SetError("Haptic: Updating effect type is illegal."); } /* Updates the effect */ if (SDL_SYS_HapticUpdateEffect(haptic, &haptic->effects[effect], data) < 0) { return -1; } SDL_memcpy(&haptic->effects[effect].effect, data, sizeof(SDL_HapticEffect)); return 0; }