http://bugs.winehq.org/show_bug.cgi?id=8986
Summary: UFO - Enemy unknown/X-COM:UFO Defence - No keyboard input Product: Wine Version: 0.9.41. Platform: PC URL: http://www.abandonia.com/games/38/UFO- EnemyUnknown/UFOEnemyUnknown.htm OS/Version: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: wine-directx-dinput AssignedTo: wine-bugs@winehq.org ReportedBy: cja@gmx.net
Between 0.9.28 and 0.9.29 the keyboard input got broken for UFO. And is still broken for 0.9.41 You can't enter a save game name.
Regression test shows that this patch: -- Author: Vitaliy Margolen wine-patches@kievinfo.com 2006-12-28 00:30:39 Committer: Alexandre Julliard julliard@winehq.org 2006-12-28 12:22:29 Parent: cb42253ff3321ebb3865cf2e3755d52014f494c6 (opengl32: Add OpenGL 2.1 support and more extensions.) Branches: origin, master, bisect Follows: wine-0.9.28 Precedes: wine-0.9.29
dinput: Remove MsgWaitForMultipleObjects calls.
---------------------------- dlls/dinput/keyboard.c ---------------------------- index 4308b45..34800ff 100644 @@ -282,9 +282,7 @@ static HRESULT WINAPI SysKeyboardAImpl_GetDeviceState( if (!This->base.acquired) return DIERR_NOTACQUIRED;
if (len != WINE_DINPUT_KEYBOARD_MAX_KEYS) - return DIERR_INVALIDPARAM; - - MsgWaitForMultipleObjectsEx(0, NULL, 0, QS_ALLINPUT, 0); + return DIERR_INVALIDPARAM;
EnterCriticalSection(&This->base.crit);
@@ -548,9 +546,7 @@ static HRESULT WINAPI SysKeyboardAImpl_Poll(LPDIRECTINPUTDEVICE8A iface) TRACE("(%p)\n",This);
if (!This->base.acquired) return DIERR_NOTACQUIRED; - - MsgWaitForMultipleObjectsEx(0, NULL, 0, QS_ALLINPUT, 0); - return DI_OK; + return DI_NOEFFECT; }
static const IDirectInputDevice8AVtbl SysKeyboardAvt = --
broke the support. Applying:
----- keyboard.c.orig 2007-07-13 19:46:16.000000000 +0200 +++ keyboard.c 2007-07-15 19:06:15.000000000 +0200 @@ -271,6 +271,8 @@ if (len != WINE_DINPUT_KEYBOARD_MAX_KEYS) return DIERR_INVALIDPARAM;
+ MsgWaitForMultipleObjectsEx(0, NULL, 0, QS_ALLINPUT, 0); + EnterCriticalSection(&This->base.crit);
if (TRACE_ON(dinput)) {
--
Fixes keyboard support for UFO. Don't ask me why.
Note, I have to run the game with: HKEY_CURRENT_USER\Software\Wine\Direct3D\DirectDrawRenderer=gdi (ATI's drivers)