Module: wine Branch: master Commit: 8ff85c08b6bbf45b58fbbc1d374f5e1c051eda2f URL: http://source.winehq.org/git/wine.git/?a=commit;h=8ff85c08b6bbf45b58fbbc1d37...
Author: Vitaliy Margolen wine-patches@kievinfo.com Date: Mon Sep 24 19:34:32 2007 -0600
dinput: Add a helper function to open configuration registry keys.
---
dlls/dinput/device.c | 35 +++++++++++++++++++++++++++++++++++ dlls/dinput/device_private.h | 1 + dlls/dinput/joystick_linux.c | 21 ++------------------- 3 files changed, 38 insertions(+), 19 deletions(-)
diff --git a/dlls/dinput/device.c b/dlls/dinput/device.c index d1c94fc..170d8fd 100644 --- a/dlls/dinput/device.c +++ b/dlls/dinput/device.c @@ -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, diff --git a/dlls/dinput/device_private.h b/dlls/dinput/device_private.h index b855c1b..edd1f4b 100644 --- a/dlls/dinput/device_private.h +++ b/dlls/dinput/device_private.h @@ -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 */ diff --git a/dlls/dinput/joystick_linux.c b/dlls/dinput/joystick_linux.c index 0f821de..000837d 100644 --- a/dlls/dinput/joystick_linux.c +++ b/dlls/dinput/joystick_linux.c @@ -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 */