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