r878 - in trunk/code: client qcommon
DONOTREPLY at icculus.org
DONOTREPLY at icculus.org
Sun Aug 27 20:44:59 EDT 2006
Author: thilo
Date: 2006-08-27 20:44:59 -0400 (Sun, 27 Aug 2006)
New Revision: 878
Modified:
trunk/code/client/cl_main.c
trunk/code/client/cl_parse.c
trunk/code/client/client.h
trunk/code/qcommon/common.c
Log:
Fix crash when recording to files and the map changes. Was caused by new, correct, behaviour of
FS_Restart() which would close the files before they'd be closed by the client.
Modified: trunk/code/client/cl_main.c
===================================================================
--- trunk/code/client/cl_main.c 2006-08-27 17:01:37 UTC (rev 877)
+++ trunk/code/client/cl_main.c 2006-08-28 00:44:59 UTC (rev 878)
@@ -1199,6 +1199,9 @@
CL_CloseAVI( );
}
+ if(clc.demorecording)
+ CL_StopRecord_f();
+
// don't let them loop during the restart
S_StopAllSounds();
// shutdown the UI
Modified: trunk/code/client/cl_parse.c
===================================================================
--- trunk/code/client/cl_parse.c 2006-08-27 17:01:37 UTC (rev 877)
+++ trunk/code/client/cl_parse.c 2006-08-28 00:44:59 UTC (rev 878)
@@ -482,8 +482,15 @@
// parse serverId and other cvars
CL_SystemInfoChanged();
+ // stop recording before FS_Restart closes the demo file
+ if(clc.demorecording)
+ CL_StopRecord_f();
+ // same fore AVI recording
+ if(CL_VideoRecording())
+ CL_CloseAVI();
+
// reinitialize the filesystem if the game directory has changed
- FS_ConditionalRestart( clc.checksumFeed );
+ FS_ConditionalRestart( clc.checksumFeed );
// This used to call CL_StartHunkUsers, but now we enter the download state before loading the
// cgame
Modified: trunk/code/client/client.h
===================================================================
--- trunk/code/client/client.h 2006-08-27 17:01:37 UTC (rev 877)
+++ trunk/code/client/client.h 2006-08-28 00:44:59 UTC (rev 878)
@@ -376,6 +376,7 @@
void CL_StartDemoLoop( void );
void CL_NextDemo( void );
void CL_ReadDemoMessage( void );
+void CL_StopRecord_f(void);
void CL_InitDownloads(void);
void CL_NextDownload(void);
Modified: trunk/code/qcommon/common.c
===================================================================
--- trunk/code/qcommon/common.c 2006-08-27 17:01:37 UTC (rev 877)
+++ trunk/code/qcommon/common.c 2006-08-28 00:44:59 UTC (rev 878)
@@ -262,9 +262,6 @@
code = ERR_FATAL;
}
- // make sure we can get at our local stuff
- FS_PureServerSetLoadedPaks( "", "" );
-
// if we are getting a solid stream of ERR_DROP, do an ERR_FATAL
currentTime = Sys_Milliseconds();
if ( currentTime - lastErrorTime < 100 ) {
@@ -292,6 +289,8 @@
if ( code == ERR_SERVERDISCONNECT ) {
CL_Disconnect( qtrue );
CL_FlushMemory( );
+ // make sure we can get at our local stuff
+ FS_PureServerSetLoadedPaks("", "");
com_errorEntered = qfalse;
longjmp (abortframe, -1);
} else if ( code == ERR_DROP || code == ERR_DISCONNECT ) {
@@ -299,6 +298,7 @@
SV_Shutdown (va("Server crashed: %s", com_errorMessage));
CL_Disconnect( qtrue );
CL_FlushMemory( );
+ FS_PureServerSetLoadedPaks("", "");
com_errorEntered = qfalse;
longjmp (abortframe, -1);
} else if ( code == ERR_NEED_CD ) {
@@ -311,6 +311,7 @@
} else {
Com_Printf("Server didn't have CD\n" );
}
+ FS_PureServerSetLoadedPaks("", "");
longjmp (abortframe, -1);
} else {
CL_Shutdown ();
More information about the quake3-commits
mailing list