MS XInput*.dll implementation

Alexey Loukianov mooroon2 at mail.ru
Wed Nov 2 04:20:15 CDT 2011


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

02.11.2011 06:05, Vitaliy Margolen wrote:
> If you really want it to get in just do it via DI. Use old patches and 
> projects like x360ce for ideas, code, and documentation. Too bad x360ce is 
> in c#.
> 
x360ce XInput1_3.dll implementation is written in pure C (well, polluted with
things like C++ comments and variables declarations in the middle of control
block, but anyways). The only part written in C# is GUI which has one purpose:
provide the user with a way to edit x360ce.ini file in a human-friendly way.

XInput1_3.dll from x360ce in generally works fine with Wine if you supply it
with a correct config for your gamepad. It allows one to use gamepads in some
XInput aware programs, I had tested it with success in LIMBO, Rage and Braid.
OTOH there are apps that fail to detect XInput devices with it, most likely
due to the detection scheme MS recommends to use which involve devices
enumeration via WMI. On Windows x360ce uses "hooks" to hijack some DI and WMI
procs and support an APP with the data it wants to get in order to detect the
presence of Xbox360 gamepad controller. IMO this technique is "a bad way to do
a simple thing" and apps that use it are poorly designed (it's not their
fault, it's MS who introduced this mess), but in case there would be built-in
XInput implementation in Wine - it should be able to handle correctly such
cases. I had already mentioned it earlier in one of the messages I sent to list.

As for "just doing via DI": despite I like the concept of implementing XI over
DI8 (it would give immediate benefit to the Wine users on all platforms where
joysticks are supported via DI), I'm not sure it is a good idea to quickly
head on to writing code if the design concepts used are not acceptable from
the point of Wine devteam. Coding "just for fun" was fun when I was fifteen
and had a lot of free spare time. It is still fun nowdays, but the amount of
time available to spend doing JFF coding became pretty short/limited. Because
of that I had decided to write a message to a wine-devel in order to discuss
code design concepts that are acceptable for XInput implementation to be
included in Wine codebase prior to launching Eclipse and starting to code.

> Implementing XInput "properly" via X11 is impossible. X11 does not support 
> force-feedback joysticks. One can wait for another 5 years for broken 
> interface. And another 5 to get it fixed.

Exactly. I totally agree with it and had already mentioned in one of my prior
messages that it would be handy to have somewhat working XInput implementation
in Wine while waiting for X11 to be fixed which isn't guaranteed to happen at
all. Knowing that we might face something like Wayland to become popular and
widely installed display server in about 5 years also doesn't add up to the
"use X11" concept.

- -- 
Best regards,
Alexey Loukianov                          mailto:mooroon2 at mail.ru
System Engineer,                            Mob.:+7(926)218-1320
*nix Specialist

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.16 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQEcBAEBAgAGBQJOsQtPAAoJEPB9BOdTkBUL+kgH/2gWSVnBj2zQTxZAKdQ4cWwR
dHUYhPKry5FpyKk7e8kDr+pS4b/GDU3r/BF5tbxNjZ6CJqNhjGS2uWBANH+E9Sml
NYQTn16uGzH/tWq2ynleePb7hexZvIKx8dWSEmLH2gmbFakOoosrPLNY8Wvd9UIZ
lexTXBrs8hNFvTezqtd4iwxbj6RxYqyUcVrEoILgicLtSb0G2XSNHJc4Evwx+Oc8
QyU5LM2+qIWa5PKR6i4fUM0hPIlPb1n5YjATbMIw2dN+fAeZmjd6H3U/Fqkb6B7d
Dw1sEwAH6DvcDdQNrVnwFSzhgNReVZRQvTiDrFHyfEU37IWQ3p4TLiATIPmHg2Y=
=cr0V
-----END PGP SIGNATURE-----



More information about the wine-devel mailing list