@@ -659,6 +659,17 @@ struct mg_gamepads {
659659
660660#ifdef MG_IMPLEMENTATION
661661
662+ #ifdef MG_WINDOWS
663+ #include <windows.h>
664+ #include <xinput.h>
665+ typedef DWORD (* PFN_XInputSetState)(DWORD,XINPUT_VIBRATION*);
666+ PFN_XInputSetState XInputSetStateSrc;
667+ #endif
668+
669+ #ifdef MG_LINUX
670+ #include <unistd.h>
671+ #endif
672+
662673#ifdef MG_MACOS
663674 #include <IOKit/IOKitLib.h>
664675 #include <IOKit/hid/IOHIDManager.h>
@@ -735,7 +746,7 @@ void mg_gamepad_rumble(mg_gamepad* gamepad, float low, float high) {
735746 XINPUT_VIBRATION vibration;
736747 vibration.wLeftMotorSpeed = (WORD)(low * 65535.0f);
737748 vibration.wRightMotorSpeed = (WORD)(high * 65535.0f);
738- XInputSetStateSrc(gamepad->src.xinput_index - 1, &vibration);
749+ ( XInputSetStateSrc) (gamepad->src.xinput_index - 1, &vibration);
739750 }
740751#elif defined(MG_MACOS)
741752 if (gamepad->connected == MG_FALSE) return;
@@ -1285,7 +1296,7 @@ mg_bool mg_gamepads_poll_platform(mg_gamepads* gamepads, mg_events* events) {
12851296 size = read(gamepads->src.inotify, buffer, sizeof(buffer));
12861297
12871298 while (size > offset) {
1288- const struct inotify_event* e = (struct inotify_event*) (buffer + offset);
1299+ const struct inotify_event* e = (struct inotify_event*) (void*) ( buffer + offset);
12891300
12901301 offset += (mg_ssize_t)sizeof(struct inotify_event) + e->len;
12911302
@@ -1388,7 +1399,7 @@ mg_bool mg_gamepad_update_platform(mg_gamepad* gamepad, mg_events* events) {
13881399 break;
13891400 }
13901401
1391- if (range) {
1402+ if (range != 0.0f ) {
13921403 /* Normalize to 0.0 -> 1.0 */
13931404 normalized = (normalized - (float)info.minimum) / range;
13941405 /* Normalize to -1.0 -> 1.0 */
@@ -1575,7 +1586,6 @@ MG_API void mg_xinput_fetch_gamepads(mg_gamepads* gamepads, mg_events* events);
15751586
15761587mg_gamepad* mg_xinput_list[XUSER_MAX_COUNT];
15771588typedef DWORD (* PFN_XInputGetState)(DWORD,XINPUT_STATE*);
1578- typedef DWORD (* PFN_XInputSetState)(DWORD,XINPUT_VIBRATION*);
15791589typedef DWORD (* PFN_XInputGetCapabilities)(DWORD,DWORD,XINPUT_CAPABILITIES*);
15801590typedef DWORD (* PFN_XInputGetKeystroke)(DWORD, DWORD, PXINPUT_KEYSTROKE);
15811591typedef HRESULT (WINAPI * PFN_DirectInput8Create)(HINSTANCE,DWORD,REFIID,LPVOID*,LPUNKNOWN);
@@ -1769,7 +1779,7 @@ BOOL CALLBACK DirectInputEnumDevicesCallback(LPCDIDEVICEINSTANCE inst, LPVOID us
17691779 return DIENUM_CONTINUE;
17701780 }
17711781
1772- if (!WideCharToMultiByte(CP_UTF8, 0, (const wchar_t*)inst->tszInstanceName, -1, gamepad->name, sizeof(gamepad->name), NULL, NULL)) {
1782+ if (!WideCharToMultiByte(CP_UTF8, 0, (const wchar_t*) (const void*) inst->tszInstanceName, -1, gamepad->name, sizeof(gamepad->name), NULL, NULL)) {
17731783 mg_gamepad_release(gamepads, gamepad);
17741784 return DIENUM_STOP;
17751785 }
@@ -1952,7 +1962,7 @@ void mg_gamepads_init_platform(mg_gamepads* gamepads) {
19521962
19531963 RegisterClassW(&Class);
19541964
1955- gamepads->src.dummy_win = CreateWindowW(Class.lpszClassName, (wchar_t*)"", 0, 0, 0, 0, 0, 0, 0, hInstance, 0);
1965+ gamepads->src.dummy_win = CreateWindowW(Class.lpszClassName, (wchar_t*) (void*) L "", 0, 0, 0, 0, 0, 0, 0, hInstance, 0);
19561966
19571967 SetPropW(gamepads->src.dummy_win, L"gamepads", gamepads);
19581968}
@@ -2438,12 +2448,14 @@ void mg_osx_device_added_callback(void* context, IOReturn result, void *sender,
24382448 }
24392449 }
24402450
2441- gamepad->src.events = (void*)&gamepads->events;
2442- gamepad->src.device = (void*)device;
2443-
2444- mg_handle_connection_event(&gamepads->events, MG_TRUE, gamepad);
2445- CFRelease(elements);
2446- }void mg_osx_device_removed_callback(void *context, IOReturn result, void *sender, IOHIDDeviceRef device) {
2451+ gamepad->src.events = (void*)&gamepads->events;
2452+ gamepad->src.device = (void*)device;
2453+
2454+ mg_handle_connection_event(&gamepads->events, MG_TRUE, gamepad);
2455+ CFRelease(elements);
2456+ }
2457+
2458+ void mg_osx_device_removed_callback(void *context, IOReturn result, void *sender, IOHIDDeviceRef device) {
24472459 mg_gamepads* gamepads = (mg_gamepads*)context;
24482460 mg_gamepad* cur = NULL;
24492461
0 commit comments