Actually, that behavioural change to the chainsaw could probably do with fixing. I was going to do it myself but then noticed you were in the process of changing how view angles are handled client side and decided to leave it alone (see <tt>P_PlayerThinkAttackLunge</tt> in <i>/plugins/common/src/p_user.c</i>).
<strong>EDIT</strong>: The alt-tab issue under Windows is a compound problem, part of which I've resolved. The remaining issue is that when Doomsday regains focus, the key state tables for the keyboard (in inputdev_t) are not updated with the current state of the alt and shift keys (so too the global altDown and shiftDown variables but these can surely be removed now). However, there is no guarantee that once we lose focus that we will continue to receive all Windows messages for those keys (another application may decide not to forward them) so that we can track their state reliably. Furthermore, due to the way in which we handle keyboard input under Windows, we can't currently simply query the state of those keys when we regain focus (we currently use a buffered input mode in which we only receive state change deltas, which, we only are told about when we have focus).
I'm thinking that it would be best to leave this alone for now and in a future release we dump the use of DirectInput for the keyboard and mouse, instead reacting to Windows messages. For joystick input we could perhaps look at one of the newer APIs like XInput (but this would make DirectX 9 a requirement).
On inspection, fixing the lunge behaviour is not straight forward given the reordering of <tt>P_PlayerThink</tt>.
The mobj flag <tt>MF_JUSTATTACKED </tt> is used to signal when a player-controlled mobj should lunge forward (the angle having already been adjusted in <tt>A_ReFire</tt> to point at the target, as a result of <tt>P_PlayerThinkPsprites</tt>). However, player movement is done in <tt>P_PlayerThinkMove</tt> before <tt>P_PlayerThinkPsprites</tt> and because <tt>MF_JUSTATTACKED</tt> is removed at the beginning of the next tic, the result would be the player never lunging, even if <tt>P_PlayerThinkAttackLunge</tt> was updated to change <tt>player_t::brain</tt> rather than <tt>player_t::cmd</tt>.
Comments
<strong>EDIT</strong>: The alt-tab issue under Windows is a compound problem, part of which I've resolved. The remaining issue is that when Doomsday regains focus, the key state tables for the keyboard (in inputdev_t) are not updated with the current state of the alt and shift keys (so too the global altDown and shiftDown variables but these can surely be removed now). However, there is no guarantee that once we lose focus that we will continue to receive all Windows messages for those keys (another application may decide not to forward them) so that we can track their state reliably. Furthermore, due to the way in which we handle keyboard input under Windows, we can't currently simply query the state of those keys when we regain focus (we currently use a buffered input mode in which we only receive state change deltas, which, we only are told about when we have focus).
I'm thinking that it would be best to leave this alone for now and in a future release we dump the use of DirectInput for the keyboard and mouse, instead reacting to Windows messages. For joystick input we could perhaps look at one of the newer APIs like XInput (but this would make DirectX 9 a requirement).
Also, please add some bullets to the <a href="http://dengine.net/dew/index.php?title=Doomsday_version_1.9.0-beta6" rel="nofollow">release notes</a> of things you think are worthy of highlighting.
The mobj flag <tt>MF_JUSTATTACKED </tt> is used to signal when a player-controlled mobj should lunge forward (the angle having already been adjusted in <tt>A_ReFire</tt> to point at the target, as a result of <tt>P_PlayerThinkPsprites</tt>). However, player movement is done in <tt>P_PlayerThinkMove</tt> before <tt>P_PlayerThinkPsprites</tt> and because <tt>MF_JUSTATTACKED</tt> is removed at the beginning of the next tic, the result would be the player never lunging, even if <tt>P_PlayerThinkAttackLunge</tt> was updated to change <tt>player_t::brain</tt> rather than <tt>player_t::cmd</tt>.