[PATCH 2/5] dinput: Factor out the dinput_device_init() call into dinput7_CreateDeviceEx().

Zebediah Figura zfigura at codeweavers.com
Sun May 15 20:46:11 CDT 2022


Signed-off-by: Zebediah Figura <zfigura at codeweavers.com>
---
 dlls/dinput/dinput_main.c  | 7 +++++++
 dlls/dinput/joystick_hid.c | 2 --
 dlls/dinput/keyboard.c     | 6 ------
 dlls/dinput/mouse.c        | 6 ------
 4 files changed, 7 insertions(+), 14 deletions(-)

diff --git a/dlls/dinput/dinput_main.c b/dlls/dinput/dinput_main.c
index 0cd5eb59588..41e143ad43c 100644
--- a/dlls/dinput/dinput_main.c
+++ b/dlls/dinput/dinput_main.c
@@ -545,6 +545,13 @@ static HRESULT WINAPI dinput7_CreateDeviceEx( IDirectInput7W *iface, const GUID
     else hr = hid_joystick_create_device( impl, guid, &device );
 
     if (FAILED(hr)) return hr;
+
+    if (FAILED(hr = dinput_device_init( device )))
+    {
+        IDirectInputDevice8_Release( device );
+        return hr;
+    }
+
     hr = IDirectInputDevice8_QueryInterface( device, iid, out );
     IDirectInputDevice8_Release( device );
     return hr;
diff --git a/dlls/dinput/joystick_hid.c b/dlls/dinput/joystick_hid.c
index ef6cbfba65f..4e083871ba4 100644
--- a/dlls/dinput/joystick_hid.c
+++ b/dlls/dinput/joystick_hid.c
@@ -2138,8 +2138,6 @@ HRESULT hid_joystick_create_device( struct dinput *dinput, const GUID *guid, IDi
         impl->base.caps.dwFFDriverVersion = 1;
     }
 
-    if (FAILED(hr = dinput_device_init( &impl->base.IDirectInputDevice8W_iface ))) goto failed;
-
     *out = &impl->base.IDirectInputDevice8W_iface;
     return DI_OK;
 
diff --git a/dlls/dinput/keyboard.c b/dlls/dinput/keyboard.c
index 1a1776ac408..f8f7a5a3195 100644
--- a/dlls/dinput/keyboard.c
+++ b/dlls/dinput/keyboard.c
@@ -183,12 +183,6 @@ HRESULT keyboard_create_device( struct dinput *dinput, const GUID *guid, IDirect
     impl->base.caps.dwFirmwareRevision = 100;
     impl->base.caps.dwHardwareRevision = 100;
 
-    if (FAILED(hr = dinput_device_init( &impl->base.IDirectInputDevice8W_iface )))
-    {
-        IDirectInputDevice_Release( &impl->base.IDirectInputDevice8W_iface );
-        return hr;
-    }
-
     *out = &impl->base.IDirectInputDevice8W_iface;
     return DI_OK;
 }
diff --git a/dlls/dinput/mouse.c b/dlls/dinput/mouse.c
index 46c065d78fa..fd1f9c03620 100644
--- a/dlls/dinput/mouse.c
+++ b/dlls/dinput/mouse.c
@@ -122,12 +122,6 @@ HRESULT mouse_create_device( struct dinput *dinput, const GUID *guid, IDirectInp
     if (appkey) RegCloseKey(appkey);
     if (hkey) RegCloseKey(hkey);
 
-    if (FAILED(hr = dinput_device_init( &impl->base.IDirectInputDevice8W_iface )))
-    {
-        IDirectInputDevice_Release( &impl->base.IDirectInputDevice8W_iface );
-        return hr;
-    }
-
     if (dinput->dwVersion >= 0x0800)
     {
         impl->base.use_raw_input = TRUE;
-- 
2.35.1




More information about the wine-devel mailing list