The new message queue code has caused the half-life menus to hang, since it handles timers slightly differently now.
Now: - User moves mouse over a menu item - On mouseover, game starts a window timer (55ms) - On each WM_TIMER, game redraws the menu item. This takes longer than 55ms - After drawing, it checks messages. Since the 55ms timer has expired, another WM_TIMER is received, item is redrawn, any user input is ignored. Repeat
Before, the hardware input queue was checked before WM_PAINT and WM_TIMER was checked, so the user could move the cursor away from the menu item (which would cancel the timer). With the new code, the hardware input queue (x11drv.MsgWaitFor...) is checked *after* timers, so the menu is now completely stuck.
The new message queue design doesn't seem to allow this to be fixed... or does it?