Signed-off-by: Rémi Bernon rbernon@codeweavers.com --- dlls/dinput/device.c | 48 ++++++++++++++++++++++++++++++++++++ dlls/dinput/device_private.h | 1 + dlls/dinput/joystick.c | 48 ------------------------------------ 3 files changed, 49 insertions(+), 48 deletions(-)
diff --git a/dlls/dinput/device.c b/dlls/dinput/device.c index d869f439101..61f6effad19 100644 --- a/dlls/dinput/device.c +++ b/dlls/dinput/device.c @@ -314,6 +314,54 @@ DWORD get_config_key( HKEY defkey, HKEY appkey, const WCHAR *name, WCHAR *buffer return ERROR_FILE_NOT_FOUND; }
+BOOL device_instance_is_disabled( DIDEVICEINSTANCEW *instance, BOOL *override ) +{ + static const WCHAR disabled_str[] = {'d', 'i', 's', 'a', 'b', 'l', 'e', 'd', 0}; + static const WCHAR override_str[] = {'o', 'v', 'e', 'r', 'r', 'i', 'd', 'e', 0}; + static const WCHAR joystick_key[] = {'J', 'o', 'y', 's', 't', 'i', 'c', 'k', 's', 0}; + WCHAR buffer[MAX_PATH]; + HKEY hkey, appkey, temp; + BOOL disable = FALSE; + + get_app_key( &hkey, &appkey ); + if (override) *override = FALSE; + + /* Joystick settings are in the 'joysticks' subkey */ + if (appkey) + { + if (RegOpenKeyW( appkey, joystick_key, &temp )) temp = 0; + RegCloseKey( appkey ); + appkey = temp; + } + + if (hkey) + { + if (RegOpenKeyW( hkey, joystick_key, &temp )) temp = 0; + RegCloseKey( hkey ); + hkey = temp; + } + + /* Look for the "controllername"="disabled" key */ + if (!get_config_key( hkey, appkey, instance->tszInstanceName, buffer, sizeof(buffer) )) + { + if (!strcmpW( disabled_str, buffer )) + { + TRACE( "Disabling joystick '%s' based on registry key.\n", debugstr_w(instance->tszInstanceName) ); + disable = TRUE; + } + else if (override && !strcmpW( override_str, buffer )) + { + TRACE( "Force enabling joystick '%s' based on registry key.\n", debugstr_w(instance->tszInstanceName) ); + *override = TRUE; + } + } + + if (appkey) RegCloseKey( appkey ); + if (hkey) RegCloseKey( hkey ); + + return disable; +} + /* Conversion between internal data buffer and external data buffer */ void fill_DataFormat(void *out, DWORD size, const void *in, const DataFormat *df) { diff --git a/dlls/dinput/device_private.h b/dlls/dinput/device_private.h index 90eab627c26..8aced6d84dd 100644 --- a/dlls/dinput/device_private.h +++ b/dlls/dinput/device_private.h @@ -98,6 +98,7 @@ extern const IDirectInputDevice8AVtbl dinput_device_a_vtbl DECLSPEC_HIDDEN;
extern BOOL get_app_key(HKEY*, HKEY*) DECLSPEC_HIDDEN; extern DWORD get_config_key( HKEY, HKEY, const WCHAR *, WCHAR *, DWORD ) DECLSPEC_HIDDEN; +extern BOOL device_instance_is_disabled( DIDEVICEINSTANCEW *instance, BOOL *override ) DECLSPEC_HIDDEN;
/* Routines to do DataFormat / WineFormat conversions */ extern void fill_DataFormat(void *out, DWORD size, const void *in, const DataFormat *df) DECLSPEC_HIDDEN; diff --git a/dlls/dinput/joystick.c b/dlls/dinput/joystick.c index 6e573e8741a..979d5a5c7f2 100644 --- a/dlls/dinput/joystick.c +++ b/dlls/dinput/joystick.c @@ -279,54 +279,6 @@ BOOL device_disabled_registry(const char* name) return device_instance_is_disabled( &instance, NULL ); }
-BOOL device_instance_is_disabled( DIDEVICEINSTANCEW *instance, BOOL *override ) -{ - static const WCHAR disabled_str[] = {'d', 'i', 's', 'a', 'b', 'l', 'e', 'd', 0}; - static const WCHAR override_str[] = {'o', 'v', 'e', 'r', 'r', 'i', 'd', 'e', 0}; - static const WCHAR joystick_key[] = {'J', 'o', 'y', 's', 't', 'i', 'c', 'k', 's', 0}; - WCHAR buffer[MAX_PATH]; - HKEY hkey, appkey, temp; - BOOL disable = FALSE; - - get_app_key(&hkey, &appkey); - if (override) *override = FALSE; - - /* Joystick settings are in the 'joysticks' subkey */ - if (appkey) - { - if (RegOpenKeyW( appkey, joystick_key, &temp )) temp = 0; - RegCloseKey(appkey); - appkey = temp; - } - - if (hkey) - { - if (RegOpenKeyW( hkey, joystick_key, &temp )) temp = 0; - RegCloseKey(hkey); - hkey = temp; - } - - /* Look for the "controllername"="disabled" key */ - if (!get_config_key( hkey, appkey, instance->tszInstanceName, buffer, sizeof(buffer) )) - { - if (!strcmpW( disabled_str, buffer )) - { - TRACE( "Disabling joystick '%s' based on registry key.\n", debugstr_w(instance->tszInstanceName) ); - disable = TRUE; - } - else if (override && !strcmpW( override_str, buffer )) - { - TRACE( "Force enabling joystick '%s' based on registry key.\n", debugstr_w(instance->tszInstanceName) ); - *override = TRUE; - } - } - - if (appkey) RegCloseKey(appkey); - if (hkey) RegCloseKey(hkey); - - return disable; -} - BOOL is_xinput_device(const DIDEVCAPS *devcaps, WORD vid, WORD pid) { int i;