win_joystick_rawinput: Fix wchar/char mismatch

This commit is contained in:
GH Cao
2022-09-02 16:53:53 +08:00
parent 1e696006e5
commit 0cca0d9831
3 changed files with 12 additions and 10 deletions

View File

@@ -23,7 +23,9 @@
#ifndef PLAT_WIN_H
#define PLAT_WIN_H
#ifndef UNICODE
#define UNICODE
#endif
#define BITMAP WINDOWS_BITMAP
#if 0
# ifdef _WIN32_WINNT

View File

@@ -205,15 +205,15 @@ void joystick_get_capabilities(raw_joystick_t* rawjoy, plat_joystick_t* joy) {
void joystick_get_device_name(raw_joystick_t* rawjoy, plat_joystick_t* joy, PRID_DEVICE_INFO info) {
UINT size = 0;
char *device_name = NULL;
WCHAR *device_name = NULL;
WCHAR device_desc_wide[200] = {0};
GetRawInputDeviceInfoA(rawjoy->hdevice, RIDI_DEVICENAME, device_name, &size);
device_name = calloc(size, sizeof(char));
if (GetRawInputDeviceInfoA(rawjoy->hdevice, RIDI_DEVICENAME, device_name, &size) <= 0)
GetRawInputDeviceInfoW(rawjoy->hdevice, RIDI_DEVICENAME, device_name, &size);
device_name = calloc(size, sizeof(WCHAR));
if (GetRawInputDeviceInfoW(rawjoy->hdevice, RIDI_DEVICENAME, device_name, &size) <= 0)
fatal("joystick_get_capabilities: Failed to get device name.\n");
HANDLE hDevObj = CreateFile(device_name, GENERIC_READ | GENERIC_WRITE,
HANDLE hDevObj = CreateFileW(device_name, GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);
if (hDevObj) {
HidD_GetProductString(hDevObj, device_desc_wide, sizeof(WCHAR) * 200);

View File

@@ -220,15 +220,15 @@ void
joystick_get_device_name(raw_joystick_t *rawjoy, plat_joystick_t *joy, PRID_DEVICE_INFO info)
{
UINT size = 0;
char *device_name = NULL;
WCHAR *device_name = NULL;
WCHAR device_desc_wide[200] = { 0 };
GetRawInputDeviceInfoA(rawjoy->hdevice, RIDI_DEVICENAME, device_name, &size);
device_name = calloc(size, sizeof(char));
if (GetRawInputDeviceInfoA(rawjoy->hdevice, RIDI_DEVICENAME, device_name, &size) <= 0)
GetRawInputDeviceInfoW(rawjoy->hdevice, RIDI_DEVICENAME, device_name, &size);
device_name = calloc(size, sizeof(WCHAR));
if (GetRawInputDeviceInfoW(rawjoy->hdevice, RIDI_DEVICENAME, device_name, &size) <= 0)
fatal("joystick_get_capabilities: Failed to get device name.\n");
HANDLE hDevObj = CreateFile(device_name, GENERIC_READ | GENERIC_WRITE,
HANDLE hDevObj = CreateFileW(device_name, GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);
if (hDevObj) {
HidD_GetProductString(hDevObj, device_desc_wide, sizeof(WCHAR) * 200);