http://bugs.winehq.org/show_bug.cgi?id=33316
Bug #: 33316 Summary: DirectInput fails when GetMessage is not called Product: Wine Version: 1.5.27 Platform: x86-64 OS/Version: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: directx-dinput AssignedTo: wine-bugs@winehq.org ReportedBy: xlinuxro@yahoo.com Classification: Unclassified
Created attachment 44066 --> http://bugs.winehq.org/attachment.cgi?id=44066 a patch for wine-1.5.27
IDirectInputDevice2::GetDeviceData fails to return keyboard events if the calling application does not continue pumping its message queue (PeekMessage/GetMessage). That is because IDirectInputDevice2 is implemented using a WH_KEYBOARD_LL hook and that hook is implemented inside of wine's normal event processing.
This problem makes Star Wars: X-wing Alliance unplayable because the user must press the "space" key before a mission starts and that event is never delivered. Some of the other Star Wars spaceflight games are also affected. They hang in some menus while waiting for input.
I recommend adding a call to PeekMessage in GetDeviceData and have attached a patch which does that. X-wing Alliance becomes playable with this patch.