mirror of
https://github.com/UberGames/ioef.git
synced 2024-12-01 00:21:19 +00:00
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.
This commit is contained in:
parent
591e11e740
commit
fbfc886b22
4 changed files with 16 additions and 4 deletions
|
@ -1199,6 +1199,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
|
||||||
|
|
|
@ -482,8 +482,15 @@ void CL_ParseGamestate( msg_t *msg ) {
|
||||||
// parse serverId and other cvars
|
// parse serverId and other cvars
|
||||||
CL_SystemInfoChanged();
|
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
|
// 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
|
||||||
|
|
|
@ -376,6 +376,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);
|
||||||
|
|
|
@ -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 ) {
|
||||||
|
@ -292,6 +289,8 @@ void QDECL Com_Error( int code, const char *fmt, ... ) {
|
||||||
if ( code == ERR_SERVERDISCONNECT ) {
|
if ( 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 || code == ERR_DISCONNECT ) {
|
||||||
|
@ -299,6 +298,7 @@ void QDECL Com_Error( int code, const char *fmt, ... ) {
|
||||||
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 +311,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 ();
|
||||||
|
|
Loading…
Reference in a new issue