We normally should not peek messages here, but because of current winex11.drv design, we have to call MsgWaitForMultipleObjectsEx from time to time to pull keyboard or mouse events.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=51956 Signed-off-by: Rémi Bernon rbernon@codeweavers.com --- dlls/dinput/device.c | 3 +-- dlls/dinput/dinput_main.c | 2 ++ 2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/dlls/dinput/device.c b/dlls/dinput/device.c index d375229e2c0..c79b182bc66 100644 --- a/dlls/dinput/device.c +++ b/dlls/dinput/device.c @@ -1535,10 +1535,9 @@ static HRESULT WINAPI dinput_device_Poll( IDirectInputDevice8W *iface ) EnterCriticalSection( &impl->crit ); if (!impl->acquired) hr = DIERR_NOTACQUIRED; LeaveCriticalSection( &impl->crit ); - if (hr != DI_OK) return hr;
if (impl->vtbl->poll) return impl->vtbl->poll( iface ); - return DI_OK; + return hr; }
static HRESULT WINAPI dinput_device_SendDeviceData( IDirectInputDevice8W *iface, DWORD size, diff --git a/dlls/dinput/dinput_main.c b/dlls/dinput/dinput_main.c index 3286e887662..835a8656bd1 100644 --- a/dlls/dinput/dinput_main.c +++ b/dlls/dinput/dinput_main.c @@ -1430,6 +1430,8 @@ void check_dinput_events(void) * (for example Culpa Innata) * - some games only poll the device, and neither keyboard nor mouse * (for example Civilization: Call to Power 2) + * - some games do not explicitly poll for keyboard events + * (for example Morrowind in its key binding page) */ MsgWaitForMultipleObjectsEx(0, NULL, 0, QS_ALLINPUT, 0); }