HomeWildfire Games

Improve correctness of hotkeys at low framerates.

Description

Improve correctness of hotkeys at low framerates.

SDL queues up all the input events received in a frame. When the hotkey system saw a key up/down event, it immediately updated its HotkeyIsPressed state and then pushed a hotkey event onto the end of the queue.

If the initial queue was e.g. [key-down shift, key-press Z, key-up shift], the hotkey event triggered by Z would be processed after the key-up shift had updated the HotkeyIsPressed state, so the handler of the Z hotkey would not think the shift hotkey was pressed.

If the initial queue was e.g. [key-press Z, mouse-click], the hotkey triggered by Z would be processed after the mouse-click event, so it could apply to the wrong building selection.

Fix by pushing the hotkey events onto a special queue that gets processed before any subsequent SDL input events.

Also update the HotkeyIsPressed status when the HOTKEYDOWN/HOTKEYUP events are processed, not when they are generated, to guarantee they are consistent with the DOWN/UP events.

Fixes #1869.

Details

Committed
philipOct 30 2013, 2:38 AM
Parents
rP14056: Fixed typos reported in Transifex by qwertz and Loki.
Branches
Unknown
Tags
Unknown