- 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.
This commit is contained in:
Thilo Schulz 2006-10-27 12:49:55 +00:00
parent 78e6b4a904
commit 90208be35a
4 changed files with 19 additions and 8 deletions

View file

@ -1202,6 +1202,9 @@ void CL_Vid_Restart_f( void ) {
CL_CloseAVI( ); CL_CloseAVI( );
} }
if(clc.demorecording)
CL_StopRecord_f();
// don't let them loop during the restart // don't let them loop during the restart
S_StopAllSounds(); S_StopAllSounds();
// shutdown the UI // shutdown the UI

View file

@ -504,8 +504,15 @@ void CL_ParseGamestate( msg_t *msg ) {
// parse serverId and other cvars // parse serverId and other cvars
CL_SystemInfoChanged(); 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 // 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 // This used to call CL_StartHunkUsers, but now we enter the download state before loading the
// cgame // cgame

View file

@ -391,6 +391,7 @@ void CL_Snd_Restart_f (void);
void CL_StartDemoLoop( void ); void CL_StartDemoLoop( void );
void CL_NextDemo( void ); void CL_NextDemo( void );
void CL_ReadDemoMessage( void ); void CL_ReadDemoMessage( void );
void CL_StopRecord_f(void);
void CL_InitDownloads(void); void CL_InitDownloads(void);
void CL_NextDownload(void); void CL_NextDownload(void);

View file

@ -262,9 +262,6 @@ void QDECL Com_Error( int code, const char *fmt, ... ) {
code = ERR_FATAL; 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 // if we are getting a solid stream of ERR_DROP, do an ERR_FATAL
currentTime = Sys_Milliseconds(); currentTime = Sys_Milliseconds();
if ( currentTime - lastErrorTime < 100 ) { if ( currentTime - lastErrorTime < 100 ) {
@ -285,20 +282,22 @@ void QDECL Com_Error( int code, const char *fmt, ... ) {
vsprintf (com_errorMessage,fmt,argptr); vsprintf (com_errorMessage,fmt,argptr);
va_end (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); Cvar_Set("com_errorMessage", com_errorMessage);
}
if ( code == ERR_SERVERDISCONNECT ) { if (code == ERR_DISCONNECT || code == ERR_SERVERDISCONNECT) {
CL_Disconnect( qtrue ); CL_Disconnect( qtrue );
CL_FlushMemory( ); CL_FlushMemory( );
// make sure we can get at our local stuff
FS_PureServerSetLoadedPaks("", "");
com_errorEntered = qfalse; com_errorEntered = qfalse;
longjmp (abortframe, -1); longjmp (abortframe, -1);
} else if ( code == ERR_DROP || code == ERR_DISCONNECT ) { } else if (code == ERR_DROP) {
Com_Printf ("********************\nERROR: %s\n********************\n", com_errorMessage); Com_Printf ("********************\nERROR: %s\n********************\n", com_errorMessage);
SV_Shutdown (va("Server crashed: %s", com_errorMessage)); SV_Shutdown (va("Server crashed: %s", com_errorMessage));
CL_Disconnect( qtrue ); CL_Disconnect( qtrue );
CL_FlushMemory( ); CL_FlushMemory( );
FS_PureServerSetLoadedPaks("", "");
com_errorEntered = qfalse; com_errorEntered = qfalse;
longjmp (abortframe, -1); longjmp (abortframe, -1);
} else if ( code == ERR_NEED_CD ) { } else if ( code == ERR_NEED_CD ) {
@ -311,6 +310,7 @@ void QDECL Com_Error( int code, const char *fmt, ... ) {
} else { } else {
Com_Printf("Server didn't have CD\n" ); Com_Printf("Server didn't have CD\n" );
} }
FS_PureServerSetLoadedPaks("", "");
longjmp (abortframe, -1); longjmp (abortframe, -1);
} else { } else {
CL_Shutdown (); CL_Shutdown ();