Commit 8ff85c08 authored by Vitaliy Margolen's avatar Vitaliy Margolen Committed by Alexandre Julliard

dinput: Add a helper function to open configuration registry keys.

parent 319097f5
......@@ -218,6 +218,41 @@ void _dump_DIDATAFORMAT(const DIDATAFORMAT *df) {
}
/******************************************************************************
* Get the default and the app-specific config keys.
*/
BOOL get_app_key(HKEY *defkey, HKEY *appkey)
{
char buffer[MAX_PATH+16];
DWORD len;
*appkey = 0;
/* @@ Wine registry key: HKCU\Software\Wine\DirectInput */
if (RegOpenKeyA(HKEY_CURRENT_USER, "Software\\Wine\\DirectInput", defkey))
*defkey = 0;
len = GetModuleFileNameA(0, buffer, MAX_PATH);
if (len && len < MAX_PATH)
{
HKEY tmpkey;
/* @@ Wine registry key: HKCU\Software\Wine\AppDefaults\app.exe\DirectInput */
if (!RegOpenKeyA(HKEY_CURRENT_USER, "Software\\Wine\\AppDefaults", &tmpkey))
{
char *p, *appname = buffer;
if ((p = strrchr(appname, '/'))) appname = p + 1;
if ((p = strrchr(appname, '\\'))) appname = p + 1;
strcat(appname, "\\DirectInput");
if (RegOpenKeyA(tmpkey, appname, appkey)) appkey = 0;
RegCloseKey(tmpkey);
}
}
return *defkey || *appkey;
}
/******************************************************************************
* Get a config key from either the app-specific or the default config
*/
DWORD get_config_key( HKEY defkey, HKEY appkey, const char *name,
......
......@@ -72,6 +72,7 @@ struct IDirectInputDevice2AImpl
DataFormat data_format; /* user data format and wine to user format converter */
};
extern BOOL get_app_key(HKEY*, HKEY*);
extern DWORD get_config_key(HKEY, HKEY, const char*, char*, DWORD);
/* Routines to do DataFormat / WineFormat conversions */
......
......@@ -269,28 +269,11 @@ static BOOL joydev_enum_deviceW(DWORD dwDevType, DWORD dwFlags, LPDIDEVICEINSTAN
static HRESULT setup_dinput_options(JoystickImpl * device)
{
char buffer[MAX_PATH+16];
HKEY hkey, appkey = 0;
DWORD len;
HKEY hkey, appkey;
buffer[MAX_PATH]='\0';
/* @@ Wine registry key: HKCU\Software\Wine\DirectInput */
if (RegOpenKeyA( HKEY_CURRENT_USER, "Software\\Wine\\DirectInput", &hkey)) hkey = 0;
len = GetModuleFileNameA( 0, buffer, MAX_PATH );
if (len && len < MAX_PATH) {
HKEY tmpkey;
/* @@ Wine registry key: HKCU\Software\Wine\AppDefaults\app.exe\DirectInput */
if (!RegOpenKeyA( HKEY_CURRENT_USER, "Software\\Wine\\AppDefaults", &tmpkey ))
{
char *p, *appname = buffer;
if ((p = strrchr( appname, '/' ))) appname = p + 1;
if ((p = strrchr( appname, '\\' ))) appname = p + 1;
strcat( appname, "\\DirectInput" );
if (RegOpenKeyA( tmpkey, appname, &appkey )) appkey = 0;
RegCloseKey( tmpkey );
}
}
get_app_key(&hkey, &appkey);
/* get options */
......
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