From d50520462a6cfe67ff04b4b30b059b87084eab5a Mon Sep 17 00:00:00 2001 From: Maia <66437537+maia-s@users.noreply.github.com> Date: Wed, 23 Apr 2025 23:16:13 +0200 Subject: [PATCH] Add and use SDL_HapticEffectID typedef --- include/SDL3/SDL_haptic.h | 24 ++++++++++++++------ src/dynapi/SDL_dynapi_procs.h | 12 +++++----- src/haptic/SDL_haptic.c | 18 +++++++-------- src/haptic/SDL_syshaptic.h | 2 +- src/haptic/hidapi/SDL_hidapihaptic.c | 12 +++++----- src/haptic/hidapi/SDL_hidapihaptic.h | 12 +++++----- src/haptic/hidapi/SDL_hidapihaptic_c.h | 26 +++++++++++----------- src/haptic/hidapi/SDL_hidapihaptic_lg4ff.c | 22 +++++++++--------- test/testhaptic.c | 2 +- 9 files changed, 70 insertions(+), 60 deletions(-) diff --git a/include/SDL3/SDL_haptic.h b/include/SDL3/SDL_haptic.h index 776b3ac80b..9a20396d37 100644 --- a/include/SDL3/SDL_haptic.h +++ b/include/SDL3/SDL_haptic.h @@ -70,7 +70,7 @@ * { * SDL_Haptic *haptic; * SDL_HapticEffect effect; - * int effect_id; + * SDL_HapticEffectID effect_id; * * // Open the device * haptic = SDL_OpenHapticFromJoystick(joystick); @@ -450,6 +450,16 @@ typedef Uint8 SDL_HapticDirectionType; /* @} *//* Haptic features */ +/** + * ID for haptic effects. + * + * This is -1 if the ID is invalid. + * + * \sa SDL_CreateHapticEffect + */ +typedef int SDL_HapticEffectID; + + /** * Structure that represents a haptic direction. * @@ -1203,7 +1213,7 @@ extern SDL_DECLSPEC bool SDLCALL SDL_HapticEffectSupported(SDL_Haptic *haptic, c * \sa SDL_RunHapticEffect * \sa SDL_UpdateHapticEffect */ -extern SDL_DECLSPEC int SDLCALL SDL_CreateHapticEffect(SDL_Haptic *haptic, const SDL_HapticEffect *effect); +extern SDL_DECLSPEC SDL_HapticEffectID SDLCALL SDL_CreateHapticEffect(SDL_Haptic *haptic, const SDL_HapticEffect *effect); /** * Update the properties of an effect. @@ -1225,7 +1235,7 @@ extern SDL_DECLSPEC int SDLCALL SDL_CreateHapticEffect(SDL_Haptic *haptic, const * \sa SDL_CreateHapticEffect * \sa SDL_RunHapticEffect */ -extern SDL_DECLSPEC bool SDLCALL SDL_UpdateHapticEffect(SDL_Haptic *haptic, int effect, const SDL_HapticEffect *data); +extern SDL_DECLSPEC bool SDLCALL SDL_UpdateHapticEffect(SDL_Haptic *haptic, SDL_HapticEffectID effect, const SDL_HapticEffect *data); /** * Run the haptic effect on its associated haptic device. @@ -1249,7 +1259,7 @@ extern SDL_DECLSPEC bool SDLCALL SDL_UpdateHapticEffect(SDL_Haptic *haptic, int * \sa SDL_StopHapticEffect * \sa SDL_StopHapticEffects */ -extern SDL_DECLSPEC bool SDLCALL SDL_RunHapticEffect(SDL_Haptic *haptic, int effect, Uint32 iterations); +extern SDL_DECLSPEC bool SDLCALL SDL_RunHapticEffect(SDL_Haptic *haptic, SDL_HapticEffectID effect, Uint32 iterations); /** * Stop the haptic effect on its associated haptic device. @@ -1264,7 +1274,7 @@ extern SDL_DECLSPEC bool SDLCALL SDL_RunHapticEffect(SDL_Haptic *haptic, int eff * \sa SDL_RunHapticEffect * \sa SDL_StopHapticEffects */ -extern SDL_DECLSPEC bool SDLCALL SDL_StopHapticEffect(SDL_Haptic *haptic, int effect); +extern SDL_DECLSPEC bool SDLCALL SDL_StopHapticEffect(SDL_Haptic *haptic, SDL_HapticEffectID effect); /** * Destroy a haptic effect on the device. @@ -1279,7 +1289,7 @@ extern SDL_DECLSPEC bool SDLCALL SDL_StopHapticEffect(SDL_Haptic *haptic, int ef * * \sa SDL_CreateHapticEffect */ -extern SDL_DECLSPEC void SDLCALL SDL_DestroyHapticEffect(SDL_Haptic *haptic, int effect); +extern SDL_DECLSPEC void SDLCALL SDL_DestroyHapticEffect(SDL_Haptic *haptic, SDL_HapticEffectID effect); /** * Get the status of the current effect on the specified haptic device. @@ -1295,7 +1305,7 @@ extern SDL_DECLSPEC void SDLCALL SDL_DestroyHapticEffect(SDL_Haptic *haptic, int * * \sa SDL_GetHapticFeatures */ -extern SDL_DECLSPEC bool SDLCALL SDL_GetHapticEffectStatus(SDL_Haptic *haptic, int effect); +extern SDL_DECLSPEC bool SDLCALL SDL_GetHapticEffectStatus(SDL_Haptic *haptic, SDL_HapticEffectID effect); /** * Set the global gain of the specified haptic device. diff --git a/src/dynapi/SDL_dynapi_procs.h b/src/dynapi/SDL_dynapi_procs.h index 4b642c9103..86005529a1 100644 --- a/src/dynapi/SDL_dynapi_procs.h +++ b/src/dynapi/SDL_dynapi_procs.h @@ -137,7 +137,7 @@ SDL_DYNAPI_PROC(SDL_GPUSampler*,SDL_CreateGPUSampler,(SDL_GPUDevice *a, const SD SDL_DYNAPI_PROC(SDL_GPUShader*,SDL_CreateGPUShader,(SDL_GPUDevice *a, const SDL_GPUShaderCreateInfo *b),(a,b),return) SDL_DYNAPI_PROC(SDL_GPUTexture*,SDL_CreateGPUTexture,(SDL_GPUDevice *a, const SDL_GPUTextureCreateInfo *b),(a,b),return) SDL_DYNAPI_PROC(SDL_GPUTransferBuffer*,SDL_CreateGPUTransferBuffer,(SDL_GPUDevice *a, const SDL_GPUTransferBufferCreateInfo *b),(a,b),return) -SDL_DYNAPI_PROC(int,SDL_CreateHapticEffect,(SDL_Haptic *a, const SDL_HapticEffect *b),(a,b),return) +SDL_DYNAPI_PROC(SDL_HapticEffectID,SDL_CreateHapticEffect,(SDL_Haptic *a, const SDL_HapticEffect *b),(a,b),return) SDL_DYNAPI_PROC(SDL_Mutex*,SDL_CreateMutex,(void),(),return) SDL_DYNAPI_PROC(SDL_Palette*,SDL_CreatePalette,(int a),(a),return) SDL_DYNAPI_PROC(SDL_Window*,SDL_CreatePopupWindow,(SDL_Window *a, int b, int c, int d, int e, SDL_WindowFlags f),(a,b,c,d,e,f),return) @@ -171,7 +171,7 @@ SDL_DYNAPI_PROC(void,SDL_DestroyCondition,(SDL_Condition *a),(a),) SDL_DYNAPI_PROC(void,SDL_DestroyCursor,(SDL_Cursor *a),(a),) SDL_DYNAPI_PROC(void,SDL_DestroyEnvironment,(SDL_Environment *a),(a),) SDL_DYNAPI_PROC(void,SDL_DestroyGPUDevice,(SDL_GPUDevice *a),(a),) -SDL_DYNAPI_PROC(void,SDL_DestroyHapticEffect,(SDL_Haptic *a, int b),(a,b),) +SDL_DYNAPI_PROC(void,SDL_DestroyHapticEffect,(SDL_Haptic *a, SDL_HapticEffectID b),(a,b),) SDL_DYNAPI_PROC(void,SDL_DestroyMutex,(SDL_Mutex *a),(a),) SDL_DYNAPI_PROC(void,SDL_DestroyPalette,(SDL_Palette *a),(a),) SDL_DYNAPI_PROC(void,SDL_DestroyProcess,(SDL_Process *a),(a),) @@ -386,7 +386,7 @@ SDL_DYNAPI_PROC(SDL_JoystickID*,SDL_GetGamepads,(int *a),(a),return) SDL_DYNAPI_PROC(SDL_MouseButtonFlags,SDL_GetGlobalMouseState,(float *a, float *b),(a,b),return) SDL_DYNAPI_PROC(SDL_PropertiesID,SDL_GetGlobalProperties,(void),(),return) SDL_DYNAPI_PROC(SDL_Window*,SDL_GetGrabbedWindow,(void),(),return) -SDL_DYNAPI_PROC(bool,SDL_GetHapticEffectStatus,(SDL_Haptic *a, int b),(a,b),return) +SDL_DYNAPI_PROC(bool,SDL_GetHapticEffectStatus,(SDL_Haptic *a, SDL_HapticEffectID b),(a,b),return) SDL_DYNAPI_PROC(Uint32,SDL_GetHapticFeatures,(SDL_Haptic *a),(a),return) SDL_DYNAPI_PROC(SDL_Haptic*,SDL_GetHapticFromID,(SDL_HapticID a),(a),return) SDL_DYNAPI_PROC(SDL_HapticID,SDL_GetHapticID,(SDL_Haptic *a),(a),return) @@ -802,7 +802,7 @@ SDL_DYNAPI_PROC(bool,SDL_RumbleGamepadTriggers,(SDL_Gamepad *a, Uint16 b, Uint16 SDL_DYNAPI_PROC(bool,SDL_RumbleJoystick,(SDL_Joystick *a, Uint16 b, Uint16 c, Uint32 d),(a,b,c,d),return) SDL_DYNAPI_PROC(bool,SDL_RumbleJoystickTriggers,(SDL_Joystick *a, Uint16 b, Uint16 c, Uint32 d),(a,b,c,d),return) SDL_DYNAPI_PROC(int,SDL_RunApp,(int a, char *b[], SDL_main_func c, void *d),(a,b,c,d),return) -SDL_DYNAPI_PROC(bool,SDL_RunHapticEffect,(SDL_Haptic *a, int b, Uint32 c),(a,b,c),return) +SDL_DYNAPI_PROC(bool,SDL_RunHapticEffect,(SDL_Haptic *a, SDL_HapticEffectID b, Uint32 c),(a,b,c),return) SDL_DYNAPI_PROC(bool,SDL_SaveBMP,(SDL_Surface *a, const char *b),(a,b),return) SDL_DYNAPI_PROC(bool,SDL_SaveBMP_IO,(SDL_Surface *a, SDL_IOStream *b, bool c),(a,b,c),return) SDL_DYNAPI_PROC(SDL_Surface*,SDL_ScaleSurface,(SDL_Surface *a, int b, int c, SDL_ScaleMode d),(a,b,c,d),return) @@ -948,7 +948,7 @@ SDL_DYNAPI_PROC(void,SDL_SignalSemaphore,(SDL_Semaphore *a),(a),) SDL_DYNAPI_PROC(bool,SDL_StartTextInput,(SDL_Window *a),(a),return) SDL_DYNAPI_PROC(bool,SDL_StartTextInputWithProperties,(SDL_Window *a, SDL_PropertiesID b),(a,b),return) SDL_DYNAPI_PROC(Uint32,SDL_StepUTF8,(const char **a, size_t *b),(a,b),return) -SDL_DYNAPI_PROC(bool,SDL_StopHapticEffect,(SDL_Haptic *a, int b),(a,b),return) +SDL_DYNAPI_PROC(bool,SDL_StopHapticEffect,(SDL_Haptic *a, SDL_HapticEffectID b),(a,b),return) SDL_DYNAPI_PROC(bool,SDL_StopHapticEffects,(SDL_Haptic *a),(a),return) SDL_DYNAPI_PROC(bool,SDL_StopHapticRumble,(SDL_Haptic *a),(a),return) SDL_DYNAPI_PROC(bool,SDL_StopTextInput,(SDL_Window *a),(a),return) @@ -986,7 +986,7 @@ SDL_DYNAPI_PROC(void,SDL_UnmapGPUTransferBuffer,(SDL_GPUDevice *a, SDL_GPUTransf SDL_DYNAPI_PROC(void,SDL_UnregisterApp,(void),(),) SDL_DYNAPI_PROC(bool,SDL_UnsetEnvironmentVariable,(SDL_Environment *a, const char *b),(a,b),return) SDL_DYNAPI_PROC(void,SDL_UpdateGamepads,(void),(),) -SDL_DYNAPI_PROC(bool,SDL_UpdateHapticEffect,(SDL_Haptic *a, int b, const SDL_HapticEffect *c),(a,b,c),return) +SDL_DYNAPI_PROC(bool,SDL_UpdateHapticEffect,(SDL_Haptic *a, SDL_HapticEffectID b, const SDL_HapticEffect *c),(a,b,c),return) SDL_DYNAPI_PROC(void,SDL_UpdateJoysticks,(void),(),) SDL_DYNAPI_PROC(bool,SDL_UpdateNVTexture,(SDL_Texture *a, const SDL_Rect *b, const Uint8 *c, int d, const Uint8 *e, int f),(a,b,c,d,e,f),return) SDL_DYNAPI_PROC(void,SDL_UpdateSensors,(void),(),) diff --git a/src/haptic/SDL_haptic.c b/src/haptic/SDL_haptic.c index 1c945252dd..2e8024fa94 100644 --- a/src/haptic/SDL_haptic.c +++ b/src/haptic/SDL_haptic.c @@ -418,7 +418,7 @@ SDL_Haptic *SDL_OpenHapticFromJoystick(SDL_Joystick *joystick) void SDL_CloseHaptic(SDL_Haptic *haptic) { - int i; + SDL_HapticEffectID i; SDL_Haptic *hapticlist; SDL_Haptic *hapticlistprev; @@ -522,9 +522,9 @@ bool SDL_HapticEffectSupported(SDL_Haptic *haptic, const SDL_HapticEffect *effec return false; } -int SDL_CreateHapticEffect(SDL_Haptic *haptic, const SDL_HapticEffect *effect) +SDL_HapticEffectID SDL_CreateHapticEffect(SDL_Haptic *haptic, const SDL_HapticEffect *effect) { - int i; + SDL_HapticEffectID i; CHECK_HAPTIC_MAGIC(haptic, -1); @@ -564,7 +564,7 @@ int SDL_CreateHapticEffect(SDL_Haptic *haptic, const SDL_HapticEffect *effect) return -1; } -static bool ValidEffect(SDL_Haptic *haptic, int effect) +static bool ValidEffect(SDL_Haptic *haptic, SDL_HapticEffectID effect) { if ((effect < 0) || (effect >= haptic->neffects)) { SDL_SetError("Haptic: Invalid effect identifier."); @@ -573,7 +573,7 @@ static bool ValidEffect(SDL_Haptic *haptic, int effect) return true; } -bool SDL_UpdateHapticEffect(SDL_Haptic *haptic, int effect, const SDL_HapticEffect *data) +bool SDL_UpdateHapticEffect(SDL_Haptic *haptic, SDL_HapticEffectID effect, const SDL_HapticEffect *data) { CHECK_HAPTIC_MAGIC(haptic, false); @@ -606,7 +606,7 @@ bool SDL_UpdateHapticEffect(SDL_Haptic *haptic, int effect, const SDL_HapticEffe return true; } -bool SDL_RunHapticEffect(SDL_Haptic *haptic, int effect, Uint32 iterations) +bool SDL_RunHapticEffect(SDL_Haptic *haptic, SDL_HapticEffectID effect, Uint32 iterations) { CHECK_HAPTIC_MAGIC(haptic, false); @@ -628,7 +628,7 @@ bool SDL_RunHapticEffect(SDL_Haptic *haptic, int effect, Uint32 iterations) return true; } -bool SDL_StopHapticEffect(SDL_Haptic *haptic, int effect) +bool SDL_StopHapticEffect(SDL_Haptic *haptic, SDL_HapticEffectID effect) { CHECK_HAPTIC_MAGIC(haptic, false); @@ -650,7 +650,7 @@ bool SDL_StopHapticEffect(SDL_Haptic *haptic, int effect) return true; } -void SDL_DestroyHapticEffect(SDL_Haptic *haptic, int effect) +void SDL_DestroyHapticEffect(SDL_Haptic *haptic, SDL_HapticEffectID effect) { CHECK_HAPTIC_MAGIC(haptic,); @@ -673,7 +673,7 @@ void SDL_DestroyHapticEffect(SDL_Haptic *haptic, int effect) SDL_SYS_HapticDestroyEffect(haptic, &haptic->effects[effect]); } -bool SDL_GetHapticEffectStatus(SDL_Haptic *haptic, int effect) +bool SDL_GetHapticEffectStatus(SDL_Haptic *haptic, SDL_HapticEffectID effect) { CHECK_HAPTIC_MAGIC(haptic, false); diff --git a/src/haptic/SDL_syshaptic.h b/src/haptic/SDL_syshaptic.h index ec60a71e78..21b3afd129 100644 --- a/src/haptic/SDL_syshaptic.h +++ b/src/haptic/SDL_syshaptic.h @@ -52,7 +52,7 @@ struct SDL_Haptic struct haptic_hwdata *hwdata; // Driver dependent int ref_count; // Count for multiple opens - int rumble_id; // ID of rumble effect for simple rumble API. + SDL_HapticEffectID rumble_id; // ID of rumble effect for simple rumble API. SDL_HapticEffect rumble_effect; // Rumble effect. struct SDL_Haptic *next; // pointer to next haptic we have allocated }; diff --git a/src/haptic/hidapi/SDL_hidapihaptic.c b/src/haptic/hidapi/SDL_hidapihaptic.c index 309145b8a2..7f59f6c90b 100644 --- a/src/haptic/hidapi/SDL_hidapihaptic.c +++ b/src/haptic/hidapi/SDL_hidapihaptic.c @@ -237,37 +237,37 @@ void SDL_HIDAPI_HapticQuit(void) } } -int SDL_HIDAPI_HapticNewEffect(SDL_Haptic *haptic, const SDL_HapticEffect *base) +SDL_HapticEffectID SDL_HIDAPI_HapticNewEffect(SDL_Haptic *haptic, const SDL_HapticEffect *base) { SDL_HIDAPI_HapticDevice *device = (SDL_HIDAPI_HapticDevice *)haptic->hwdata; return device->driver->CreateEffect(device, base); } -bool SDL_HIDAPI_HapticUpdateEffect(SDL_Haptic *haptic, int id, const SDL_HapticEffect *data) +bool SDL_HIDAPI_HapticUpdateEffect(SDL_Haptic *haptic, SDL_HapticEffectID id, const SDL_HapticEffect *data) { SDL_HIDAPI_HapticDevice *device = (SDL_HIDAPI_HapticDevice *)haptic->hwdata; return device->driver->UpdateEffect(device, id, data); } -bool SDL_HIDAPI_HapticRunEffect(SDL_Haptic *haptic, int id, Uint32 iterations) +bool SDL_HIDAPI_HapticRunEffect(SDL_Haptic *haptic, SDL_HapticEffectID id, Uint32 iterations) { SDL_HIDAPI_HapticDevice *device = (SDL_HIDAPI_HapticDevice *)haptic->hwdata; return device->driver->RunEffect(device, id, iterations); } -bool SDL_HIDAPI_HapticStopEffect(SDL_Haptic *haptic, int id) +bool SDL_HIDAPI_HapticStopEffect(SDL_Haptic *haptic, SDL_HapticEffectID id) { SDL_HIDAPI_HapticDevice *device = (SDL_HIDAPI_HapticDevice *)haptic->hwdata; return device->driver->StopEffect(device, id); } -void SDL_HIDAPI_HapticDestroyEffect(SDL_Haptic *haptic, int id) +void SDL_HIDAPI_HapticDestroyEffect(SDL_Haptic *haptic, SDL_HapticEffectID id) { SDL_HIDAPI_HapticDevice *device = (SDL_HIDAPI_HapticDevice *)haptic->hwdata; device->driver->DestroyEffect(device, id); } -bool SDL_HIDAPI_HapticGetEffectStatus(SDL_Haptic *haptic, int id) +bool SDL_HIDAPI_HapticGetEffectStatus(SDL_Haptic *haptic, SDL_HapticEffectID id) { SDL_HIDAPI_HapticDevice *device = (SDL_HIDAPI_HapticDevice *)haptic->hwdata; return device->driver->GetEffectStatus(device, id); diff --git a/src/haptic/hidapi/SDL_hidapihaptic.h b/src/haptic/hidapi/SDL_hidapihaptic.h index cc82291ebe..4734bbc5b4 100644 --- a/src/haptic/hidapi/SDL_hidapihaptic.h +++ b/src/haptic/hidapi/SDL_hidapihaptic.h @@ -33,12 +33,12 @@ bool SDL_HIDAPI_HapticOpenFromJoystick(SDL_Haptic *haptic, SDL_Joystick *joystic bool SDL_HIDAPI_JoystickSameHaptic(SDL_Haptic *haptic, SDL_Joystick *joystick); void SDL_HIDAPI_HapticClose(SDL_Haptic *haptic); void SDL_HIDAPI_HapticQuit(void); -int SDL_HIDAPI_HapticNewEffect(SDL_Haptic *haptic, const SDL_HapticEffect *base); -bool SDL_HIDAPI_HapticUpdateEffect(SDL_Haptic *haptic, int id, const SDL_HapticEffect *data); -bool SDL_HIDAPI_HapticRunEffect(SDL_Haptic *haptic, int id, Uint32 iterations); -bool SDL_HIDAPI_HapticStopEffect(SDL_Haptic *haptic, int id); -void SDL_HIDAPI_HapticDestroyEffect(SDL_Haptic *haptic, int id); -bool SDL_HIDAPI_HapticGetEffectStatus(SDL_Haptic *haptic, int id); +SDL_HapticEffectID SDL_HIDAPI_HapticNewEffect(SDL_Haptic *haptic, const SDL_HapticEffect *base); +bool SDL_HIDAPI_HapticUpdateEffect(SDL_Haptic *haptic, SDL_HapticEffectID id, const SDL_HapticEffect *data); +bool SDL_HIDAPI_HapticRunEffect(SDL_Haptic *haptic, SDL_HapticEffectID id, Uint32 iterations); +bool SDL_HIDAPI_HapticStopEffect(SDL_Haptic *haptic, SDL_HapticEffectID id); +void SDL_HIDAPI_HapticDestroyEffect(SDL_Haptic *haptic, SDL_HapticEffectID id); +bool SDL_HIDAPI_HapticGetEffectStatus(SDL_Haptic *haptic, SDL_HapticEffectID id); bool SDL_HIDAPI_HapticSetGain(SDL_Haptic *haptic, int gain); bool SDL_HIDAPI_HapticSetAutocenter(SDL_Haptic *haptic, int autocenter); bool SDL_HIDAPI_HapticPause(SDL_Haptic *haptic); diff --git a/src/haptic/hidapi/SDL_hidapihaptic_c.h b/src/haptic/hidapi/SDL_hidapihaptic_c.h index 83f1a89b1c..7d678811d5 100644 --- a/src/haptic/hidapi/SDL_hidapihaptic_c.h +++ b/src/haptic/hidapi/SDL_hidapihaptic_c.h @@ -41,7 +41,7 @@ typedef struct SDL_HIDAPI_HapticDevice struct SDL_HIDAPI_HapticDriver { - bool (*JoystickSupported)(SDL_Joystick *joystick); /* return SDL_TRUE if haptic can be opened from the joystick */ + bool (*JoystickSupported)(SDL_Joystick *joystick); /* return true if haptic can be opened from the joystick */ void *(*Open)(SDL_Joystick *joystick); /* returns a driver context allocated with SDL_malloc, or null if it cannot be allocated */ /* functions below need to handle the possibility of a null joystick instance, indicating the absence of the joystick */ @@ -52,19 +52,19 @@ struct SDL_HIDAPI_HapticDriver int (*NumEffectsPlaying)(SDL_HIDAPI_HapticDevice *device); /* returns supported number of effects the device can play concurrently */ Uint32 (*GetFeatures)(SDL_HIDAPI_HapticDevice *device); /* returns supported effects in a bitmask */ int (*NumAxes)(SDL_HIDAPI_HapticDevice *device); /* returns the number of haptic axes */ - int (*CreateEffect)(SDL_HIDAPI_HapticDevice *device, const SDL_HapticEffect *data); /* returns effect id if created correctly, negative number on error */ - bool (*UpdateEffect)(SDL_HIDAPI_HapticDevice *device, int id, const SDL_HapticEffect *data); /* returns 0 on success, negative number on error */ - bool (*RunEffect)(SDL_HIDAPI_HapticDevice *device, int id, Uint32 iterations); /* returns 0 on success, negative number on error */ - bool (*StopEffect)(SDL_HIDAPI_HapticDevice *device, int id); /* returns 0 on success, negative number on error */ - void (*DestroyEffect)(SDL_HIDAPI_HapticDevice *device, int id); /* returns 0 on success, negative number on error */ - bool (*GetEffectStatus)(SDL_HIDAPI_HapticDevice *device, int id); /* returns 0 if not playing, 1 if playing, negative number on error */ - bool (*SetGain)(SDL_HIDAPI_HapticDevice *device, int gain); /* gain 0 - 100, returns 0 on success, negative number on error */ - bool (*SetAutocenter)(SDL_HIDAPI_HapticDevice *device, int autocenter); /* gain 0 - 100, returns 0 on success, negative number on error */ - bool (*Pause)(SDL_HIDAPI_HapticDevice *device); /* returns 0 on success, negative number on error */ - bool (*Resume)(SDL_HIDAPI_HapticDevice *device); /* returns 0 on success, negative number on error */ - bool (*StopEffects)(SDL_HIDAPI_HapticDevice *device); /* returns 0 on success, negative number on error */ + SDL_HapticEffectID (*CreateEffect)(SDL_HIDAPI_HapticDevice *device, const SDL_HapticEffect *data); /* returns effect id if created correctly, negative number on error */ + bool (*UpdateEffect)(SDL_HIDAPI_HapticDevice *device, SDL_HapticEffectID id, const SDL_HapticEffect *data); /* returns true on success, false on error */ + bool (*RunEffect)(SDL_HIDAPI_HapticDevice *device, SDL_HapticEffectID id, Uint32 iterations); /* returns true on success, false on error */ + bool (*StopEffect)(SDL_HIDAPI_HapticDevice *device, SDL_HapticEffectID id); /* returns true on success, false on error */ + void (*DestroyEffect)(SDL_HIDAPI_HapticDevice *device, SDL_HapticEffectID id); + bool (*GetEffectStatus)(SDL_HIDAPI_HapticDevice *device, SDL_HapticEffectID id); /* returns true if playing, false if not playing or on error */ + bool (*SetGain)(SDL_HIDAPI_HapticDevice *device, int gain); /* gain 0 - 100, returns true on success, false on error */ + bool (*SetAutocenter)(SDL_HIDAPI_HapticDevice *device, int autocenter); /* autocenter 0 - 100, returns true on success, false on error */ + bool (*Pause)(SDL_HIDAPI_HapticDevice *device); /* returns true on success, false on error */ + bool (*Resume)(SDL_HIDAPI_HapticDevice *device); /* returns true on success, false on error */ + bool (*StopEffects)(SDL_HIDAPI_HapticDevice *device); /* returns true on success, false on error */ }; extern SDL_HIDAPI_HapticDriver SDL_HIDAPI_HapticDriverLg4ff; -#endif //SDL_joystick_c_h_ \ No newline at end of file +#endif //SDL_joystick_c_h_ diff --git a/src/haptic/hidapi/SDL_hidapihaptic_lg4ff.c b/src/haptic/hidapi/SDL_hidapihaptic_lg4ff.c index 944bcc3a07..ad9bf0d9ef 100644 --- a/src/haptic/hidapi/SDL_hidapihaptic_lg4ff.c +++ b/src/haptic/hidapi/SDL_hidapihaptic_lg4ff.c @@ -302,7 +302,7 @@ static Uint16 get_effect_replay_delay(SDL_HapticEffect *effect) Bernat Arlandis `git blame 1a2d5727876dd7befce23d9695924e9446b31c4b hid-lg4ff.c`, https://github.com/berarma/new-lg4ff.git */ -static int lg4ff_play_effect(struct lg4ff_device *device, int effect_id, int value) +static int lg4ff_play_effect(struct lg4ff_device *device, SDL_HapticEffectID effect_id, int value) { struct lg4ff_effect_state *state; Uint64 now = get_time_ms(); @@ -334,7 +334,7 @@ static int lg4ff_play_effect(struct lg4ff_device *device, int effect_id, int val Bernat Arlandis `git blame 1a2d5727876dd7befce23d9695924e9446b31c4b hid-lg4ff.c`, https://github.com/berarma/new-lg4ff.git */ -static int lg4ff_upload_effect(struct lg4ff_device *device, const SDL_HapticEffect *effect, int id) +static int lg4ff_upload_effect(struct lg4ff_device *device, const SDL_HapticEffect *effect, SDL_HapticEffectID id) { struct lg4ff_effect_state *state; Uint64 now = get_time_ms(); @@ -995,11 +995,11 @@ static int SDL_HIDAPI_HapticDriverLg4ff_NumAxes(SDL_HIDAPI_HapticDevice *device) return 1; } -static int SDL_HIDAPI_HapticDriverLg4ff_CreateEffect(SDL_HIDAPI_HapticDevice *device, const SDL_HapticEffect *data) +static SDL_HapticEffectID SDL_HIDAPI_HapticDriverLg4ff_CreateEffect(SDL_HIDAPI_HapticDevice *device, const SDL_HapticEffect *data) { lg4ff_device *ctx = (lg4ff_device *)device->ctx; - int i; - int state_slot = -1; + SDL_HapticEffectID i; + SDL_HapticEffectID state_slot = -1; int ret; if (!SDL_HIDAPI_HapticDriverLg4ff_EffectSupported(device, data)) { SDL_SetError("Unsupported effect"); @@ -1031,7 +1031,7 @@ static int SDL_HIDAPI_HapticDriverLg4ff_CreateEffect(SDL_HIDAPI_HapticDevice *de } // assumes ctx->mutex locked -static bool lg4ff_effect_slot_valid_active(lg4ff_device *ctx, int id) +static bool lg4ff_effect_slot_valid_active(lg4ff_device *ctx, SDL_HapticEffectID id) { if (id >= LG4FF_MAX_EFFECTS || id < 0) { return false; @@ -1042,7 +1042,7 @@ static bool lg4ff_effect_slot_valid_active(lg4ff_device *ctx, int id) return true; } -static bool SDL_HIDAPI_HapticDriverLg4ff_UpdateEffect(SDL_HIDAPI_HapticDevice *device, int id, const SDL_HapticEffect *data) +static bool SDL_HIDAPI_HapticDriverLg4ff_UpdateEffect(SDL_HIDAPI_HapticDevice *device, SDL_HapticEffectID id, const SDL_HapticEffect *data) { lg4ff_device *ctx = (lg4ff_device *)device->ctx; int ret; @@ -1060,7 +1060,7 @@ static bool SDL_HIDAPI_HapticDriverLg4ff_UpdateEffect(SDL_HIDAPI_HapticDevice *d return ret == 0; } -static bool SDL_HIDAPI_HapticDriverLg4ff_RunEffect(SDL_HIDAPI_HapticDevice *device, int id, Uint32 iterations) +static bool SDL_HIDAPI_HapticDriverLg4ff_RunEffect(SDL_HIDAPI_HapticDevice *device, SDL_HapticEffectID id, Uint32 iterations) { lg4ff_device *ctx = (lg4ff_device *)device->ctx; int ret; @@ -1078,12 +1078,12 @@ static bool SDL_HIDAPI_HapticDriverLg4ff_RunEffect(SDL_HIDAPI_HapticDevice *devi return ret == 0; } -static bool SDL_HIDAPI_HapticDriverLg4ff_StopEffect(SDL_HIDAPI_HapticDevice *device, int id) +static bool SDL_HIDAPI_HapticDriverLg4ff_StopEffect(SDL_HIDAPI_HapticDevice *device, SDL_HapticEffectID id) { return SDL_HIDAPI_HapticDriverLg4ff_RunEffect(device, id, 0); } -static void SDL_HIDAPI_HapticDriverLg4ff_DestroyEffect(SDL_HIDAPI_HapticDevice *device, int id) +static void SDL_HIDAPI_HapticDriverLg4ff_DestroyEffect(SDL_HIDAPI_HapticDevice *device, SDL_HapticEffectID id) { lg4ff_device *ctx = (lg4ff_device *)device->ctx; struct lg4ff_effect_state *state; @@ -1101,7 +1101,7 @@ static void SDL_HIDAPI_HapticDriverLg4ff_DestroyEffect(SDL_HIDAPI_HapticDevice * SDL_UnlockMutex(ctx->mutex); } -static bool SDL_HIDAPI_HapticDriverLg4ff_GetEffectStatus(SDL_HIDAPI_HapticDevice *device, int id) +static bool SDL_HIDAPI_HapticDriverLg4ff_GetEffectStatus(SDL_HIDAPI_HapticDevice *device, SDL_HapticEffectID id) { lg4ff_device *ctx = (lg4ff_device *)device->ctx; bool ret = false; diff --git a/test/testhaptic.c b/test/testhaptic.c index a31d278649..d617db5907 100644 --- a/test/testhaptic.c +++ b/test/testhaptic.c @@ -37,7 +37,7 @@ int main(int argc, char **argv) char *name = NULL; int index = -1; SDL_HapticEffect efx[9]; - int id[9]; + SDL_HapticEffectID id[9]; int nefx; unsigned int supported; SDL_HapticID *haptics;