aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorthilo <thilo@edf5b092-35ff-0310-97b2-ce42778d08ea>2006-10-27 12:49:55 +0000
committerthilo <thilo@edf5b092-35ff-0310-97b2-ce42778d08ea>2006-10-27 12:49:55 +0000
commit209edf554021f5fbfa11043d09286df74e146ecc (patch)
treed01448be4ef666592529b9723ce1286c7eeefc56
parentee4c1dfc89c79b38c14c71fb7bfd7a3989539ed1 (diff)
downloadioquake3-aero-209edf554021f5fbfa11043d09286df74e146ecc.tar.gz
ioquake3-aero-209edf554021f5fbfa11043d09286df74e146ecc.zip
- Remove "server crashed" message on server shutdown caused by local client disconnect.
- Stop demo recording on a new gamestate packet so the demo won't end with a new level load. git-svn-id: svn://svn.icculus.org/quake3/trunk@956 edf5b092-35ff-0310-97b2-ce42778d08ea
-rw-r--r--code/client/cl_main.c3
-rw-r--r--code/client/cl_parse.c9
-rw-r--r--code/client/client.h1
-rw-r--r--code/qcommon/common.c14
4 files changed, 19 insertions, 8 deletions
diff --git a/code/client/cl_main.c b/code/client/cl_main.c
index 4c5b403..8739fd1 100644
--- a/code/client/cl_main.c
+++ b/code/client/cl_main.c
@@ -1202,6 +1202,9 @@ void CL_Vid_Restart_f( void ) {
CL_CloseAVI( );
}
+ if(clc.demorecording)
+ CL_StopRecord_f();
+
// don't let them loop during the restart
S_StopAllSounds();
// shutdown the UI
diff --git a/code/client/cl_parse.c b/code/client/cl_parse.c
index 3039849..763486b 100644
--- a/code/client/cl_parse.c
+++ b/code/client/cl_parse.c
@@ -504,8 +504,15 @@ void CL_ParseGamestate( msg_t *msg ) {
// parse serverId and other cvars
CL_SystemInfoChanged();
+ // stop recording now so the demo won't have an unnecessary level load at the end.
+ 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
diff --git a/code/client/client.h b/code/client/client.h
index 89cb477..35d8251 100644
--- a/code/client/client.h
+++ b/code/client/client.h
@@ -391,6 +391,7 @@ void CL_Snd_Restart_f (void);
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);
diff --git a/code/qcommon/common.c b/code/qcommon/common.c
index 438f049..ca56db0 100644
--- a/code/qcommon/common.c
+++ b/code/qcommon/common.c
@@ -262,9 +262,6 @@ void QDECL Com_Error( int code, const char *fmt, ... ) {
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 ) {
@@ -285,20 +282,22 @@ void QDECL Com_Error( int code, const char *fmt, ... ) {
vsprintf (com_errorMessage,fmt,argptr);
va_end (argptr);
- if ( code != ERR_DISCONNECT && code != ERR_NEED_CD ) {
+ if (code != ERR_DISCONNECT && code != ERR_NEED_CD)
Cvar_Set("com_errorMessage", com_errorMessage);
- }
- if ( code == ERR_SERVERDISCONNECT ) {
+ if (code == ERR_DISCONNECT || 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 ) {
+ } else if (code == ERR_DROP) {
Com_Printf ("********************\nERROR: %s\n********************\n", com_errorMessage);
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 +310,7 @@ void QDECL Com_Error( int code, const char *fmt, ... ) {
} else {
Com_Printf("Server didn't have CD\n" );
}
+ FS_PureServerSetLoadedPaks("", "");
longjmp (abortframe, -1);
} else {
CL_Shutdown ();