diff options
-rw-r--r-- | engines/xeen/interface.cpp | 26 |
1 files changed, 15 insertions, 11 deletions
diff --git a/engines/xeen/interface.cpp b/engines/xeen/interface.cpp index 3d9f05b5a2..b994a99713 100644 --- a/engines/xeen/interface.cpp +++ b/engines/xeen/interface.cpp @@ -258,20 +258,24 @@ void Interface::perform() { Spells &spells = *_vm->_spells; const Common::Rect WAIT_BOUNDS(8, 8, 224, 140); - events.updateGameCounter(); - draw3d(true); - - // Wait for a frame or a user event do { - events.pollEventsAndWait(); - checkEvents(_vm); + // Draw the next frame + events.updateGameCounter(); + draw3d(true); - if (events._leftButton && WAIT_BOUNDS.contains(events._mousePos)) - _buttonValue = Common::KEYCODE_SPACE; - } while (!_buttonValue && events.timeElapsed() < 1 && !_vm->_party->_partyDead); + // Wait for a frame or a user event + _buttonValue = 0; + do { + events.pollEventsAndWait(); + if (party._partyDead) + return; - if (!_buttonValue && !_vm->_party->_partyDead) - return; + if (events._leftButton && WAIT_BOUNDS.contains(events._mousePos)) + _buttonValue = Common::KEYCODE_SPACE; + else + checkEvents(g_vm); + } while (!_buttonValue && events.timeElapsed() < 1); + } while (!_buttonValue); if (_buttonValue == Common::KEYCODE_SPACE) { int lookupId = map.mazeLookup(party._mazePosition, |