From 209edf554021f5fbfa11043d09286df74e146ecc Mon Sep 17 00:00:00 2001 From: thilo Date: Fri, 27 Oct 2006 12:49:55 +0000 Subject: - 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 --- code/client/cl_main.c | 3 +++ code/client/cl_parse.c | 9 ++++++++- code/client/client.h | 1 + code/qcommon/common.c | 14 +++++++------- 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 (); -- cgit v1.2.3