Commit 2bad9cfd authored by Sam Lantinga's avatar Sam Lantinga

Fixed joystick name detection

--HG--
branch : SDL-1.2
extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/branches/SDL-1.2%402493
parent c746a535
...@@ -76,67 +76,58 @@ static char *GetJoystickName(int index, const char *szRegKey) ...@@ -76,67 +76,58 @@ static char *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, REGSTR_PATH_JOYCONFIG, szRegKey, REGSTR_KEY_JOYCURR);
szRegKey, hTopKey = HKEY_LOCAL_MACHINE;
REGSTR_KEY_JOYCURR); regresult = RegOpenKeyExA(hTopKey, regkey, 0, KEY_READ, &hKey);
regresult = RegOpenKeyExA(HKEY_LOCAL_MACHINE, if (regresult != ERROR_SUCCESS) {
(LPTSTR) &regkey, 0, KEY_READ, &hKey); hTopKey = HKEY_CURRENT_USER;
if (regresult == ERROR_SUCCESS) regresult = RegOpenKeyExA(hTopKey, regkey, 0, KEY_READ, &hKey);
{ }
/* if (regresult != ERROR_SUCCESS) {
find the registry key name for the return NULL;
joystick's properties }
*/
regsize = sizeof(regname); /* find the registry key name for the joystick's properties */
SDL_snprintf((char *) regvalue, SDL_arraysize(regvalue), regsize = sizeof(regname);
"Joystick%d%s", index+1, SDL_snprintf(regvalue, SDL_arraysize(regvalue), "Joystick%d%s", index+1, REGSTR_VAL_JOYOEMNAME);
REGSTR_VAL_JOYOEMNAME); regresult = RegQueryValueExA(hKey, regvalue, 0, 0, (LPBYTE)regname, &regsize);
regresult = RegQueryValueExA(hKey, RegCloseKey(hKey);
(char *) regvalue, 0, 0, (LPBYTE) &regname,
(LPDWORD) &regsize); if (regresult != ERROR_SUCCESS) {
RegCloseKey(hKey); return NULL;
if (regresult == ERROR_SUCCESS) }
{
/* open that registry key */ /* open that registry key */
SDL_snprintf((char *) regkey, SDL_arraysize(regkey), "%s\\%s", SDL_snprintf(regkey, SDL_arraysize(regkey), "%s\\%s", REGSTR_PATH_JOYOEM, regname);
REGSTR_PATH_JOYOEM, regname); regresult = RegOpenKeyExA(hTopKey, regkey, 0, KEY_READ, &hKey);
regresult = RegOpenKeyExA(HKEY_LOCAL_MACHINE, if (regresult != ERROR_SUCCESS) {
(char *) regkey, 0, 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, REGSTR_VAL_JOYOEMNAME, 0, 0, NULL, &regsize);
RegQueryValueExA(hKey, if (regresult == ERROR_SUCCESS) {
REGSTR_VAL_JOYOEMNAME, /* allocate enough memory for the OEM name text ... */
0, 0, NULL, name = (char *) SDL_malloc(regsize);
(LPDWORD) &regsize); if ( name ) {
if (regresult == ERROR_SUCCESS) /* ... and read it from the registry */
{ regresult = RegQueryValueExA(hKey,
/* REGSTR_VAL_JOYOEMNAME, 0, 0,
allocate enough memory (LPBYTE) name, &regsize);
for the OEM name text ...
*/
name = (char *) SDL_malloc(regsize);
/* ... and read it from the registry */
regresult =
RegQueryValueExA(hKey,
REGSTR_VAL_JOYOEMNAME, 0, 0,
(LPBYTE) name,
(LPDWORD) &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