Commit 98681893 authored by Sam Lantinga's avatar Sam Lantinga

Fixed joystick name detection - merged from revision 3226 on SDL 1.2 branch

--HG--
extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%402495
parent 53fac91c
...@@ -78,59 +78,62 @@ GetJoystickName(int index, const char *szRegKey) ...@@ -78,59 +78,62 @@ GetJoystickName(int index, const char *szRegKey)
index (1-16) listed in the registry index (1-16) listed in the registry
*/ */
char *name = NULL; char *name = NULL;
HKEY hTopKey;
HKEY hKey; HKEY hKey;
DWORD regsize; DWORD regsize;
LONG regresult; LONG regresult;
unsigned char regkey[256]; char regkey[256];
unsigned char regvalue[256]; char regvalue[256];
unsigned char regname[256]; char regname[256];
SDL_snprintf((char *) regkey, SDL_arraysize(regkey), "%s\\%s\\%s", SDL_snprintf(regkey, SDL_arraysize(regkey), "%s\\%s\\%s",
REGSTR_PATH_JOYCONFIG, szRegKey, REGSTR_KEY_JOYCURR); REGSTR_PATH_JOYCONFIG, szRegKey, REGSTR_KEY_JOYCURR);
regresult = RegOpenKeyExA(HKEY_LOCAL_MACHINE, hTopKey = HKEY_LOCAL_MACHINE;
(LPTSTR) & regkey, 0, KEY_READ, &hKey); regresult = RegOpenKeyExA(hTopKey, regkey, 0, KEY_READ, &hKey);
if (regresult == ERROR_SUCCESS) { if (regresult != ERROR_SUCCESS) {
/* hTopKey = HKEY_CURRENT_USER;
find the registry key name for the regresult = RegOpenKeyExA(hTopKey, regkey, 0, KEY_READ, &hKey);
joystick's properties }
*/ if (regresult != ERROR_SUCCESS) {
return NULL;
}
/* find the registry key name for the joystick's properties */
regsize = sizeof(regname); regsize = sizeof(regname);
SDL_snprintf((char *) regvalue, SDL_arraysize(regvalue), SDL_snprintf(regvalue, SDL_arraysize(regvalue), "Joystick%d%s", index + 1,
"Joystick%d%s", index + 1, REGSTR_VAL_JOYOEMNAME); REGSTR_VAL_JOYOEMNAME);
regresult = RegQueryValueExA(hKey, regresult =
(char *) regvalue, 0, 0, RegQueryValueExA(hKey, regvalue, 0, 0, (LPBYTE) regname, &regsize);
(LPBYTE) & regname, (LPDWORD) & regsize);
RegCloseKey(hKey); RegCloseKey(hKey);
if (regresult == ERROR_SUCCESS) {
if (regresult != ERROR_SUCCESS) {
return NULL;
}
/* open that registry key */ /* open that registry key */
SDL_snprintf((char *) regkey, SDL_arraysize(regkey), SDL_snprintf(regkey, SDL_arraysize(regkey), "%s\\%s", REGSTR_PATH_JOYOEM,
"%s\\%s", REGSTR_PATH_JOYOEM, regname); regname);
regresult = regresult = RegOpenKeyExA(hTopKey, regkey, 0, KEY_READ, &hKey);
RegOpenKeyExA(HKEY_LOCAL_MACHINE, (char *) regkey, 0, if (regresult != ERROR_SUCCESS) {
KEY_READ, &hKey); return NULL;
if (regresult == ERROR_SUCCESS) { }
/* find the size for the OEM name text */ /* find the size for the OEM name text */
regsize = sizeof(regvalue); regsize = sizeof(regvalue);
regresult = regresult =
RegQueryValueExA(hKey, RegQueryValueExA(hKey, REGSTR_VAL_JOYOEMNAME, 0, 0, NULL, &regsize);
REGSTR_VAL_JOYOEMNAME,
0, 0, NULL, (LPDWORD) & regsize);
if (regresult == ERROR_SUCCESS) { if (regresult == ERROR_SUCCESS) {
/* /* allocate enough memory for the OEM name text ... */
allocate enough memory
for the OEM name text ...
*/
name = (char *) SDL_malloc(regsize); name = (char *) SDL_malloc(regsize);
if (name) {
/* ... and read it from the registry */ /* ... and read it from the registry */
regresult = regresult = RegQueryValueExA(hKey,
RegQueryValueExA(hKey,
REGSTR_VAL_JOYOEMNAME, 0, 0, REGSTR_VAL_JOYOEMNAME, 0, 0,
(LPBYTE) name, (LPDWORD) & regsize); (LPBYTE) name, &regsize);
RegCloseKey(hKey);
}
}
} }
} }
RegCloseKey(hKey);
return (name); return (name);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment