mirror of https://github.com/encounter/SDL.git
Added SDL_JoystickFromInstanceID() and SDL_GameControllerFromInstanceID().
This commit is contained in:
parent
998a54f9c5
commit
e6ad29aec8
|
@ -34,6 +34,8 @@ General:
|
||||||
* Added a hint SDL_HINT_WINDOW_FRAME_USABLE_WHILE_CURSOR_HIDDEN to prevent window interaction while cursor is hidden
|
* Added a hint SDL_HINT_WINDOW_FRAME_USABLE_WHILE_CURSOR_HIDDEN to prevent window interaction while cursor is hidden
|
||||||
* Added SDL_GetDisplayDPI() to get the DPI information for a display
|
* Added SDL_GetDisplayDPI() to get the DPI information for a display
|
||||||
* Added SDL_JoystickCurrentPowerLevel() to get the battery level of a joystick
|
* Added SDL_JoystickCurrentPowerLevel() to get the battery level of a joystick
|
||||||
|
* Added SDL_JoystickFromInstanceID(), as a helper function, to get the SDL_Joystick* that an event is referring to.
|
||||||
|
* Added SDL_GameControllerFromInstanceID(), as a helper function, to get the SDL_GameController* that an event is referring to.
|
||||||
|
|
||||||
Windows:
|
Windows:
|
||||||
* Added support for Windows Phone 8.1
|
* Added support for Windows Phone 8.1
|
||||||
|
|
|
@ -171,6 +171,11 @@ extern DECLSPEC const char *SDLCALL SDL_GameControllerNameForIndex(int joystick_
|
||||||
*/
|
*/
|
||||||
extern DECLSPEC SDL_GameController *SDLCALL SDL_GameControllerOpen(int joystick_index);
|
extern DECLSPEC SDL_GameController *SDLCALL SDL_GameControllerOpen(int joystick_index);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the SDL_GameController associated with an instance id.
|
||||||
|
*/
|
||||||
|
extern DECLSPEC SDL_GameController *SDLCALL SDL_GameControllerFromInstanceID(SDL_JoystickID joyid);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the name for this currently opened controller
|
* Return the name for this currently opened controller
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -106,6 +106,11 @@ extern DECLSPEC const char *SDLCALL SDL_JoystickNameForIndex(int device_index);
|
||||||
*/
|
*/
|
||||||
extern DECLSPEC SDL_Joystick *SDLCALL SDL_JoystickOpen(int device_index);
|
extern DECLSPEC SDL_Joystick *SDLCALL SDL_JoystickOpen(int device_index);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the SDL_Joystick associated with an instance id.
|
||||||
|
*/
|
||||||
|
extern DECLSPEC SDL_Joystick *SDLCALL SDL_JoystickFromInstanceID(SDL_JoystickID joyid);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the name for this currently opened joystick.
|
* Return the name for this currently opened joystick.
|
||||||
* If no name can be found, this function returns NULL.
|
* If no name can be found, this function returns NULL.
|
||||||
|
|
|
@ -595,3 +595,5 @@
|
||||||
#define SDL_GetGrabbedWindow SDL_GetGrabbedWindow_REAL
|
#define SDL_GetGrabbedWindow SDL_GetGrabbedWindow_REAL
|
||||||
#define SDL_SetWindowsMessageHook SDL_SetWindowsMessageHook_REAL
|
#define SDL_SetWindowsMessageHook SDL_SetWindowsMessageHook_REAL
|
||||||
#define SDL_JoystickCurrentPowerLevel SDL_JoystickCurrentPowerLevel_REAL
|
#define SDL_JoystickCurrentPowerLevel SDL_JoystickCurrentPowerLevel_REAL
|
||||||
|
#define SDL_GameControllerFromInstanceID SDL_GameControllerFromInstanceID_REAL
|
||||||
|
#define SDL_JoystickFromInstanceID SDL_JoystickFromInstanceID_REAL
|
||||||
|
|
|
@ -629,3 +629,5 @@ SDL_DYNAPI_PROC(void,SDL_SetWindowsMessageHook,(SDL_WindowsMessageHook a, void *
|
||||||
#endif
|
#endif
|
||||||
SDL_DYNAPI_PROC(int,SDL_GetDisplayDPI,(int a, float *b, float *c, float *d),(a,b,c,d),return)
|
SDL_DYNAPI_PROC(int,SDL_GetDisplayDPI,(int a, float *b, float *c, float *d),(a,b,c,d),return)
|
||||||
SDL_DYNAPI_PROC(SDL_JoystickPowerLevel,SDL_JoystickCurrentPowerLevel,(SDL_Joystick *a),(a),return)
|
SDL_DYNAPI_PROC(SDL_JoystickPowerLevel,SDL_JoystickCurrentPowerLevel,(SDL_Joystick *a),(a),return)
|
||||||
|
SDL_DYNAPI_PROC(SDL_GameController*,SDL_GameControllerFromInstanceID,(SDL_JoystickID a),(a),return)
|
||||||
|
SDL_DYNAPI_PROC(SDL_Joystick*,SDL_JoystickFromInstanceID,(SDL_JoystickID a),(a),return)
|
||||||
|
|
|
@ -1046,6 +1046,25 @@ SDL_Joystick *SDL_GameControllerGetJoystick(SDL_GameController * gamecontroller)
|
||||||
return gamecontroller->joystick;
|
return gamecontroller->joystick;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Find the SDL_GameController that owns this instance id
|
||||||
|
*/
|
||||||
|
SDL_GameController *
|
||||||
|
SDL_GameControllerFromInstanceID(SDL_JoystickID joyid)
|
||||||
|
{
|
||||||
|
SDL_GameController *gamecontroller = SDL_gamecontrollers;
|
||||||
|
while (gamecontroller) {
|
||||||
|
if (gamecontroller->joystick->instance_id == joyid) {
|
||||||
|
return gamecontroller;
|
||||||
|
}
|
||||||
|
gamecontroller = gamecontroller->next;
|
||||||
|
}
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the SDL joystick layer binding for this controller axis mapping
|
* Get the SDL joystick layer binding for this controller axis mapping
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -373,6 +373,23 @@ SDL_JoystickInstanceID(SDL_Joystick * joystick)
|
||||||
return (joystick->instance_id);
|
return (joystick->instance_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Find the SDL_Joystick that owns this instance id
|
||||||
|
*/
|
||||||
|
SDL_Joystick *
|
||||||
|
SDL_JoystickFromInstanceID(SDL_JoystickID joyid)
|
||||||
|
{
|
||||||
|
SDL_Joystick *joystick = SDL_joysticks;
|
||||||
|
while (joystick) {
|
||||||
|
if (joystick->instance_id == joyid) {
|
||||||
|
return joystick;
|
||||||
|
}
|
||||||
|
joystick = joystick->next;
|
||||||
|
}
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Get the friendly name of this joystick
|
* Get the friendly name of this joystick
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -291,6 +291,11 @@ main(int argc, char *argv[])
|
||||||
guid, sizeof (guid));
|
guid, sizeof (guid));
|
||||||
SDL_Log("Attempting to open device %i, guid %s\n", device, guid);
|
SDL_Log("Attempting to open device %i, guid %s\n", device, guid);
|
||||||
gamecontroller = SDL_GameControllerOpen(device);
|
gamecontroller = SDL_GameControllerOpen(device);
|
||||||
|
|
||||||
|
if (gamecontroller != NULL) {
|
||||||
|
SDL_assert(SDL_GameControllerFromInstanceID(SDL_JoystickInstanceID(SDL_GameControllerGetJoystick(gamecontroller))) == gamecontroller);
|
||||||
|
}
|
||||||
|
|
||||||
while (keepGoing) {
|
while (keepGoing) {
|
||||||
if (gamecontroller == NULL) {
|
if (gamecontroller == NULL) {
|
||||||
if (!reportederror) {
|
if (!reportederror) {
|
||||||
|
@ -316,6 +321,9 @@ main(int argc, char *argv[])
|
||||||
keepGoing = SDL_FALSE;
|
keepGoing = SDL_FALSE;
|
||||||
} else if (event.type == SDL_CONTROLLERDEVICEADDED) {
|
} else if (event.type == SDL_CONTROLLERDEVICEADDED) {
|
||||||
gamecontroller = SDL_GameControllerOpen(event.cdevice.which);
|
gamecontroller = SDL_GameControllerOpen(event.cdevice.which);
|
||||||
|
if (gamecontroller != NULL) {
|
||||||
|
SDL_assert(SDL_GameControllerFromInstanceID(SDL_JoystickInstanceID(SDL_GameControllerGetJoystick(gamecontroller))) == gamecontroller);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -265,6 +265,7 @@ main(int argc, char *argv[])
|
||||||
SDL_GetError());
|
SDL_GetError());
|
||||||
} else {
|
} else {
|
||||||
char guid[64];
|
char guid[64];
|
||||||
|
SDL_assert(SDL_JoystickFromInstanceID(SDL_JoystickInstanceID(joystick)) == joystick);
|
||||||
SDL_JoystickGetGUIDString(SDL_JoystickGetGUID(joystick),
|
SDL_JoystickGetGUIDString(SDL_JoystickGetGUID(joystick),
|
||||||
guid, sizeof (guid));
|
guid, sizeof (guid));
|
||||||
SDL_Log(" axes: %d\n", SDL_JoystickNumAxes(joystick));
|
SDL_Log(" axes: %d\n", SDL_JoystickNumAxes(joystick));
|
||||||
|
@ -292,6 +293,9 @@ main(int argc, char *argv[])
|
||||||
device = atoi(argv[1]);
|
device = atoi(argv[1]);
|
||||||
#endif
|
#endif
|
||||||
joystick = SDL_JoystickOpen(device);
|
joystick = SDL_JoystickOpen(device);
|
||||||
|
if (joystick != NULL) {
|
||||||
|
SDL_assert(SDL_JoystickFromInstanceID(SDL_JoystickInstanceID(joystick)) == joystick);
|
||||||
|
}
|
||||||
|
|
||||||
while ( keepGoing ) {
|
while ( keepGoing ) {
|
||||||
if (joystick == NULL) {
|
if (joystick == NULL) {
|
||||||
|
@ -317,6 +321,9 @@ main(int argc, char *argv[])
|
||||||
keepGoing = SDL_FALSE;
|
keepGoing = SDL_FALSE;
|
||||||
} else if (event.type == SDL_JOYDEVICEADDED) {
|
} else if (event.type == SDL_JOYDEVICEADDED) {
|
||||||
joystick = SDL_JoystickOpen(device);
|
joystick = SDL_JoystickOpen(device);
|
||||||
|
if (joystick != NULL) {
|
||||||
|
SDL_assert(SDL_JoystickFromInstanceID(SDL_JoystickInstanceID(joystick)) == joystick);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue