Hangs in half-life menus (design problem in new queue code)

Ove Kaaven ovehk at ping.uio.no
Thu Jun 14 15:18:07 CDT 2001


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?





More information about the wine-devel mailing list