Rémi Bernon (@rbernon) commented about dlls/dinput/joystick_hid.c:
impl->base.read_event = CreateEventW( NULL, TRUE, FALSE, NULL ); if (memcmp( device_path_guid.Data4, guid->Data4, sizeof(device_path_guid.Data4) ))
- {
/* Let hid_joystick_device_open() populate joystick devices before checking for default joystick GUID. */ hr = hid_joystick_device_open( -1, guid, &impl->base.instance, impl->device_path, &impl->device, &impl->preparsed, &attrs, &impl->caps, dinput->dwVersion );
if (hr == DIERR_DEVICENOTREG && IsEqualGUID( guid, &GUID_Joystick )
&& get_default_joystick_device_path( impl->device_path ))
hr = hid_joystick_device_try_open( impl->device_path, &impl->device, &impl->preparsed, &attrs,
&impl->caps, &impl->base.instance, dinput->dwVersion );
Support for GUID_Joystick could simply be about opening the first device at any point in time. Keeping a cached path as the default device to use, with no way to invalidate it after it's been set, doesn't seem very appealing either.