[Bug 38997] New: Non-deterministic device id assignment when using more than one joystick/gamepad (multiplayer). Unable to deactivate joystick through registry or wine control applet

wine-bugs at winehq.org wine-bugs at winehq.org
Thu Jul 30 07:54:28 CDT 2015


https://bugs.winehq.org/show_bug.cgi?id=38997

            Bug ID: 38997
           Summary: Non-deterministic device id assignment when using more
                    than one joystick/gamepad (multiplayer). Unable to
                    deactivate joystick through registry or wine control
                    applet
           Product: Wine
           Version: 1.7.48
          Hardware: x86
                OS: Mac OS X
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: directx-dinput
          Assignee: wine-bugs at winehq.org
          Reporter: spellbound42 at gmx.de

Using OSX Yosemite with 2-3 gamepads (a Thrustmaster, a Saiek, and a virtual
one from ControllerMate). Each of them (isolated) working well with wine.

Problem: Non-deterministic assignment of device ids when more than one of them
is connected.

For example in one wine session the Thrustmaster is referred as 'Joystick 0'
(-> wine control applet) in the next session its the Saitek that is getting id
0 - without changing anything between the sessions.
That makes it impossible to have a stable multiplayer joystick configuration
for games that rely on a stable order for the devices. It makes it impossible
too to use a virtual joystick with MAME, because sometimes its JOY1 and
sometimes its JOY2.
Furthermore it is not possible to deactivate a joystick device through the
registry or wine control respectively. That would be a workaround for using the
virtual controller with MAME - i.e. hide the physical controller that drives
the virtual one.
Looking at the source code the latter issue seems quite clear, because in
dinput/joystick_osx.c::find_osx_devices()
there is missing a code snippet like it is implemented in the corresponding
function in joystick_linux.c:
if (device_disabled_registry(..)) {
  close(...);
  continue;
}
... ok, deactivation would be useless, if its non-deterministic, which one is
deactivated ...
I think the id assignment bug/problem could at least be improved by sorting the
device list by product names before assigning the ids. But hopefully there
exists a more clever fix/solution that is closer to the root cause.

-- 
Do not reply to this email, post in Bugzilla using the
above URL to reply.
You are receiving this mail because:
You are watching all bug changes.



More information about the wine-bugs mailing list