Rémi Bernon : dinput: Support disabled by default option in device_disabled_registry.

Alexandre Julliard julliard at winehq.org
Thu Aug 26 15:22:32 CDT 2021


Module: wine
Branch: master
Commit: 0ba137e36db87b270f03c152c9e9bc88c809df14
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=0ba137e36db87b270f03c152c9e9bc88c809df14

Author: Rémi Bernon <rbernon at codeweavers.com>
Date:   Wed Aug 25 18:20:26 2021 +0200

dinput: Support disabled by default option in device_disabled_registry.

Signed-off-by: Rémi Bernon <rbernon at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/dinput/joystick.c            | 17 ++++++++++++-----
 dlls/dinput/joystick_linux.c      |  2 +-
 dlls/dinput/joystick_linuxinput.c |  2 +-
 dlls/dinput/joystick_private.h    |  2 +-
 4 files changed, 15 insertions(+), 8 deletions(-)

diff --git a/dlls/dinput/joystick.c b/dlls/dinput/joystick.c
index 8ea7850621c..60153d0d0f3 100644
--- a/dlls/dinput/joystick.c
+++ b/dlls/dinput/joystick.c
@@ -271,13 +271,13 @@ void dump_DIEFFECT(LPCDIEFFECT eff, REFGUID guid, DWORD dwFlags)
     }
 }
 
-BOOL device_disabled_registry(const char* name)
+BOOL device_disabled_registry(const char* name, BOOL disable)
 {
     static const char disabled_str[] = "disabled";
+    static const char enabled_str[] = "enabled";
     static const char joystick_key[] = "Joysticks";
     char buffer[MAX_PATH];
     HKEY hkey, appkey, temp;
-    BOOL do_disable = FALSE;
 
     get_app_key(&hkey, &appkey);
 
@@ -297,16 +297,23 @@ BOOL device_disabled_registry(const char* name)
 
     /* Look for the "controllername"="disabled" key */
     if (!get_config_key(hkey, appkey, name, buffer, sizeof(buffer)))
-        if (!strcmp(disabled_str, buffer))
+    {
+        if (!disable && !strcmp(disabled_str, buffer))
         {
             TRACE("Disabling joystick '%s' based on registry key.\n", name);
-            do_disable = TRUE;
+            disable = TRUE;
+        }
+        else if (disable && !strcmp(enabled_str, buffer))
+        {
+            TRACE("Enabling joystick '%s' based on registry key.\n", name);
+            disable = FALSE;
         }
+    }
 
     if (appkey) RegCloseKey(appkey);
     if (hkey)   RegCloseKey(hkey);
 
-    return do_disable;
+    return disable;
 }
 
 BOOL is_xinput_device(const DIDEVCAPS *devcaps, WORD vid, WORD pid)
diff --git a/dlls/dinput/joystick_linux.c b/dlls/dinput/joystick_linux.c
index 258f6e9e5e0..3a8b0f07704 100644
--- a/dlls/dinput/joystick_linux.c
+++ b/dlls/dinput/joystick_linux.c
@@ -175,7 +175,7 @@ static INT find_joystick_devices(void)
         /* Append driver name */
         strcat(joydev.name, JOYDEVDRIVER);
 
-        if (device_disabled_registry(joydev.name)) {
+        if (device_disabled_registry(joydev.name, FALSE)) {
             close(fd);
             continue;
         }
diff --git a/dlls/dinput/joystick_linuxinput.c b/dlls/dinput/joystick_linuxinput.c
index 06a735f7d91..27dd75a8b55 100644
--- a/dlls/dinput/joystick_linuxinput.c
+++ b/dlls/dinput/joystick_linuxinput.c
@@ -264,7 +264,7 @@ static void find_joydevs(void)
         else
             joydev.name = joydev.device;
 
-        if (device_disabled_registry(joydev.name)) {
+        if (device_disabled_registry(joydev.name, FALSE)) {
             close(fd);
             HeapFree(GetProcessHeap(), 0, joydev.name);
             if (joydev.name != joydev.device)
diff --git a/dlls/dinput/joystick_private.h b/dlls/dinput/joystick_private.h
index 874bf3e69a7..9cc30605234 100644
--- a/dlls/dinput/joystick_private.h
+++ b/dlls/dinput/joystick_private.h
@@ -57,7 +57,7 @@ HRESULT setup_dinput_options(JoystickGenericImpl *This, const int *default_axis_
 
 DWORD joystick_map_pov(const POINTL *p) DECLSPEC_HIDDEN;
 
-BOOL device_disabled_registry(const char* name) DECLSPEC_HIDDEN;
+BOOL device_disabled_registry(const char* name, BOOL disable) DECLSPEC_HIDDEN;
 
 ULONG WINAPI JoystickWGenericImpl_Release(LPDIRECTINPUTDEVICE8W iface);
 




More information about the wine-cvs mailing list