diff --git a/include/SDL_touch.h b/include/SDL_touch.h index 9b00716b2..d7f6a83b4 100644 --- a/include/SDL_touch.h +++ b/include/SDL_touch.h @@ -95,6 +95,11 @@ extern DECLSPEC int SDLCALL SDL_GetNumTouchDevices(void); */ extern DECLSPEC SDL_TouchID SDLCALL SDL_GetTouchDevice(int index); +/** + * \brief Get the touch device name as reported from the driver or NULL if the index is invalid. + */ +extern DECLSPEC const char* SDLCALL SDL_GetTouchName(int index); + /** * Get the type of the given touch device. * diff --git a/src/events/SDL_touch.c b/src/events/SDL_touch.c index fda530520..c3534f00e 100644 --- a/src/events/SDL_touch.c +++ b/src/events/SDL_touch.c @@ -63,6 +63,16 @@ SDL_GetTouchDevice(int index) return SDL_touchDevices[index]->id; } +const char* +SDL_GetTouchName(int index) +{ + if (index < 0 || index >= SDL_num_touch) { + SDL_SetError("Unknown touch device"); + return NULL; + } + return SDL_touchDevices[index]->name; +} + static int SDL_GetTouchIndex(SDL_TouchID id) { @@ -185,6 +195,7 @@ SDL_AddTouch(SDL_TouchID touchID, SDL_TouchDeviceType type, const char *name) SDL_touchDevices[index]->num_fingers = 0; SDL_touchDevices[index]->max_fingers = 0; SDL_touchDevices[index]->fingers = NULL; + SDL_touchDevices[index]->name = SDL_strdup(name ? name : ""); /* Record this touch device for gestures */ /* We could do this on the fly in the gesture code if we wanted */ @@ -452,6 +463,7 @@ SDL_DelTouch(SDL_TouchID id) SDL_free(touch->fingers[i]); } SDL_free(touch->fingers); + SDL_free(touch->name); SDL_free(touch); SDL_num_touch--; diff --git a/src/events/SDL_touch_c.h b/src/events/SDL_touch_c.h index c9d9a3265..4d5caf134 100644 --- a/src/events/SDL_touch_c.h +++ b/src/events/SDL_touch_c.h @@ -31,6 +31,7 @@ typedef struct SDL_Touch int num_fingers; int max_fingers; SDL_Finger** fingers; + char *name; } SDL_Touch;