View Issue Details
|ID||Project||Category||View Status||Date Submitted||Last Update|
|0000568||Gameplay + OpenGL||[All Projects] Bug||public||2017-04-11 20:24||2017-04-18 04:36|
|Platform||x64||OS||Windows 10 Home||OS Version||1703|
|Summary||0000568: [Bug] Xinput gamepads not detected when enabling joysticks (2.4.0 x64)|
|Description||The current 64-bit build of GZDOOM (2.4.0) for windows doesn't recognize either my Xbox 360 or F710 wireless gamepads (on Xinput mode) as Xinput controllers, but they are recognized as DirectInput. This is the main reason the triggers appear as axis whenever I'm customizing the controls.|
Besides, a gamepad is detected as Directinput when the controller name (i.e.: "Controller (Xbox 360 for Windows") is displayed instead of "Xinput Controller #1" on the "Configure Controllers" section.
|Steps To Reproduce||As simple as follows:|
- Go to Options > Joystick Options
- Set "Enable Controller Support" to Yes
To further prove my point, set all options except "Enable Xinput Controllers" to No.
|Additional Information||This bug is exclusive for the 64-bit build of 2.4.0. The 32-bit build works as intended and recognizes both of my gamepads correctly (as Xinput controllers). Funny thing is that it doesn't happen either on the previous versions (including 2.3.2) on both 32 and 64-bit builds.|
Guess I'll have to go and use the 32-bit build for the time being.
|Tags||No tags attached.|
I do not have any controller to test this with, so unless someone comes forward to see what happens, there's nothing that can be done, so I am putting this on hold.
Is this thread relevant at all? [Tutorial] Compiling the GZDoom source code with CMake
I have a controller (wii u pro controller with a Mayflash wireless adapter) and am willing to help test any changes you want to make.
This Wiki article contains up-to-date information.
You can ignore anything related to FMOD, OpenAL and DirectX SDK. To build GZDoom without sound/music support you need only Visual Studio 2015 (or 2017) and CMake.
Something like: install VS and CMake, download source code from GitHub and unpack it, run CMake and select source directory, press Generate, Finish, Open Project buttons in CMake, press Debug button in Visual Studio.
But first, one simple question: did you able to reproduce this issue using 2.4.0 x64?
It works for me using wired Xbox 360 controller using 32- and 64-bit version.
I was referring specifically to DaMan's post in that thread:
You might want to get a Windows7 user to test a Xbox controller. The Windows SDK only links to the Win8/10 Xinput14 or gimped Xinput91 (unless Zdoom reports battery life for wireless controlers don't think it affects anything). IIRC Zdoom is defining WIN32_WINNT as XP before including Xinput.h so it should be linking against the latter.
I've got a 64-bit build setup and can confirm the issue in the original report. I tested it with 2.5pre G4f67DC4. Xinput controllers are being reported as DirectInput. Disabling DirectInput controllers will remove the controller from the list. I did download the 32-bit version of 2.4.0 and tested it there to find it worked perfectly.
I'm going to add this info just in case it is relevant. My controller adapter has a switch on it to change from Xinput (1 controller only) to DirectInput (up to 4 controllers), and has its own drivers which haven't been updated in a while.
Could you please check with 2.3.2 and maybe some earlier versions?
To do something meaningful with this we need to now when it was broken.
|I think I've narrowed it down to this commit, which coincides with the discussion on the earlier linked topic. I tested eff03d13 (the commit right before it) and the controller showed up as 'Xinput Controller #1' with Xinput controllers enabled. With DirectInput enabled and Xinput disabled, it showed up as 'Controller (xbox 360 for windows)'.|
|The commit you linked to was later reverted, so it should no longer be an issue.|
Can't say for sure but I think this issue is somehow related to toolkit being used.
Graf, did you use Windows XP compatibility toolkit for 2.4.0 release, 32- and 64-bit both?
32 bit is built with XP toolset, 64 bit with modern toolset.
So, this sounds like something in the modern toolset is not working correctly.
Of course, just forcing the old toolset is not a solution, as sooner or later XP support will be removed, so whatever causes the problem needs to be found.
Just to let you know. I've also tested in 2.3.2, both 32 and 64 bits builds. They detected Xinput controllers correctly.
So the issue is with the 64-bit build on the current version, as the 32-bit build has no issues when it comes to Xinput controllers.
The problem is with XINPUT_DLL preprocessor definition: its value is xinput1_3.dll for legacy toolkit (DirectX SDK to be precise) and xinput9_1_0.dll for modern one (Windows 7 SDK that came with Visual Studio).
Apparently there are some issues with the latter DLL.
Should we hardcode name of working one to fix this bug?
|If that works it's at least an option.|
|Fixed in b6774e7|
|Just tested the new commit on a 64-bit build. It seems to work just fine now.|
|2017-04-11 20:24||Neurochild||New Issue|
|2017-04-12 02:03||_mental_||Priority||high => normal|
|2017-04-12 02:03||_mental_||Severity||crash => minor|
|2017-04-14 10:18||Graf Zahl||Status||new => on hold|
|2017-04-14 10:18||Graf Zahl||Note Added: 0001367|
|2017-04-16 02:23||jpalomo||Note Added: 0001404|
|2017-04-16 03:26||_mental_||Note Added: 0001406|
|2017-04-16 04:07||jpalomo||Note Added: 0001407|
|2017-04-16 04:33||_mental_||Note Added: 0001408|
|2017-04-16 05:19||jpalomo||Note Added: 0001409|
|2017-04-16 06:55||Graf Zahl||Note Added: 0001410|
|2017-04-16 07:20||_mental_||Note Added: 0001411|
|2017-04-16 08:19||Graf Zahl||Note Added: 0001412|
|2017-04-16 08:26||Neurochild||Note Added: 0001413|
|2017-04-16 09:53||_mental_||Note Added: 0001414|
|2017-04-16 12:24||Graf Zahl||Note Added: 0001416|
|2017-04-18 02:43||_mental_||Note Added: 0001427|
|2017-04-18 02:57||jpalomo||Note Added: 0001428|
|2017-04-18 04:36||_mental_||Status||on hold => resolved|
|2017-04-18 04:36||_mental_||Resolution||open => fixed|