- Fixed: When the game starts with the net pane open, the abort button

receives the input focus. When the pane is closed, the focus doesn't
  return to any window, so even though the window is still active, it no
  longer has the focus and does not receive input events.
- Fixed: The network synch timer was still left running after the game
  started. (Windows only)
- Fixed: When a player leaves the game at the exact moment they are being
  damaged, the game could crash because their actor still had a valid player
  pointer, but the player's mo pointer had been NULLed.


SVN r588 (trunk)
This commit is contained in:
Randy Heit 2007-12-09 01:14:35 +00:00
parent 282e9f5f01
commit a849564d62
5 changed files with 29 additions and 1 deletions

View file

@ -1,4 +1,13 @@
December 8, 2007
- Fixed: When the game starts with the net pane open, the abort button
receives the input focus. When the pane is closed, the focus doesn't
return to any window, so even though the window is still active, it no
longer has the focus and does not receive input events.
- Fixed: The network synch timer was still left running after the game
started. (Windows only)
- Fixed: When a player leaves the game at the exact moment they are being
damaged, the game could crash because their actor still had a valid player
pointer, but the player's mo pointer had been NULLed.
- Fixed: MAPINFO is parsed before the text colors are read, so the TextColor
option for skills wouldn't work.
- Changed the PowerTimeFreezer "blink" effect back to checking against

View file

@ -630,6 +630,7 @@ void PlayerIsGone (int netnode, int netconsole)
if (players[netconsole].mo != NULL)
{
P_DisconnectEffect (players[netconsole].mo);
players[netconsole].mo->player = NULL;
players[netconsole].mo->Destroy ();
players[netconsole].mo = NULL;
players[netconsole].camera = NULL;

View file

@ -70,6 +70,22 @@ void I_InitGraphics ()
{
UCVarValue val;
// If the focus window is destroyed, it doesn't go back to the active window.
// (e.g. because the net pane was up, and a button on it had focus)
if (GetFocus() == NULL && GetActiveWindow() == Window)
{
// Make sure it's in the foreground and focused. (It probably is
// already foregrounded but may not be focused.)
SetForegroundWindow(Window);
SetFocus(Window);
// Note that when I start a 2-player game on the same machine, the
// window for the game that isn't focused, active, or foregrounded
// still receives a WM_ACTIVATEAPP message telling it that it's the
// active window. The window that is really the active window does
// not receive a WM_ACTIVATEAPP message, so both games think they
// are the active app. Huh?
}
val.Bool = !!Args.CheckParm ("-devparm");
ticker.SetGenericRepDefault (val, CVAR_Bool);
Video = new Win32Video (0);

View file

@ -420,7 +420,8 @@ void I_CheckNativeMouse (bool preferNative)
bool wantNative = !HaveFocus ||
((!screen || !screen->IsFullscreen()) && (GUICapture || paused || preferNative || !use_mouse || demoplayback));
// Printf ("%d -> %d\n", NativeMouse, wantNative);
//Printf ("%d %d %d %d\n", HaveFocus, GetFocus() == Window, AppActive, GetForegroundWindow() == Window);
if (wantNative != NativeMouse)
{
NativeMouse = wantNative;

View file

@ -383,6 +383,7 @@ FBasicStartupScreen::~FBasicStartupScreen()
ProgressBar = NULL;
LayoutMainWindow (Window, NULL);
}
KillTimer(Window, 1337);
}
//==========================================================================