summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorNeil Barkhina <[email protected]>2021-09-12 12:02:54 -0400
committerGitHub <[email protected]>2021-09-12 18:02:54 +0200
commite9d3d4fa1fa8220ccc7c5e43a4f62f8530c8306d (patch)
treea3b84abd066e2cb77bc05584092d03ee36e44162 /src
parent024adc25389ee4add9fa6189d3f5c9ea9cbd12dd (diff)
downloadraylib-e9d3d4fa1fa8220ccc7c5e43a4f62f8530c8306d.tar.gz
raylib-e9d3d4fa1fa8220ccc7c5e43a4f62f8530c8306d.zip
Implemented GetGamepadName() for emscripten (#1986)
* implemented GetGamepadName for emscripten * updated gamepad to use existing name as arary * removed unnecessary platform_web check
Diffstat (limited to 'src')
-rw-r--r--src/core.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/src/core.c b/src/core.c
index e8f02094..711aa889 100644
--- a/src/core.c
+++ b/src/core.c
@@ -456,10 +456,10 @@ typedef struct CoreData {
char currentButtonState[MAX_GAMEPADS][MAX_GAMEPAD_BUTTONS]; // Current gamepad buttons state
char previousButtonState[MAX_GAMEPADS][MAX_GAMEPAD_BUTTONS]; // Previous gamepad buttons state
float axisState[MAX_GAMEPADS][MAX_GAMEPAD_AXIS]; // Gamepad axis state
-#if defined(PLATFORM_RPI) || defined(PLATFORM_DRM)
+#if defined(PLATFORM_RPI) || defined(PLATFORM_DRM) || defined(PLATFORM_WEB)
pthread_t threadId; // Gamepad reading thread id
int streamId[MAX_GAMEPADS]; // Gamepad device file descriptor
- char name[64]; // Gamepad name holder
+ char name[MAX_GAMEPADS][64]; // Gamepad name holder
#endif
} Gamepad;
} Input;
@@ -3273,8 +3273,11 @@ const char *GetGamepadName(int gamepad)
else return NULL;
#endif
#if defined(PLATFORM_RPI) || defined(PLATFORM_DRM)
- if (CORE.Input.Gamepad.ready[gamepad]) ioctl(CORE.Input.Gamepad.streamId[gamepad], JSIOCGNAME(64), &CORE.Input.Gamepad.name);
- return CORE.Input.Gamepad.name;
+ if (CORE.Input.Gamepad.ready[gamepad]) ioctl(CORE.Input.Gamepad.streamId[gamepad], JSIOCGNAME(64), &CORE.Input.Gamepad.name[gamepad]);
+ return CORE.Input.Gamepad.name[gamepad];
+#endif
+#if defined(PLATFORM_WEB)
+ return CORE.Input.Gamepad.name[gamepad];
#endif
return NULL;
}
@@ -5400,7 +5403,11 @@ static EM_BOOL EmscriptenGamepadCallback(int eventType, const EmscriptenGamepadE
for (int i = 0; i < gamepadEvent->numButtons; ++i) TRACELOGD("Button %d: Digital: %d, Analog: %g", i, gamepadEvent->digitalButton[i], gamepadEvent->analogButton[i]);
*/
- if ((gamepadEvent->connected) && (gamepadEvent->index < MAX_GAMEPADS)) CORE.Input.Gamepad.ready[gamepadEvent->index] = true;
+ if ((gamepadEvent->connected) && (gamepadEvent->index < MAX_GAMEPADS))
+ {
+ CORE.Input.Gamepad.ready[gamepadEvent->index] = true;
+ sprintf(CORE.Input.Gamepad.name[gamepadEvent->index],"%s",gamepadEvent->id);
+ }
else CORE.Input.Gamepad.ready[gamepadEvent->index] = false;
// TODO: Test gamepadEvent->index