From 698c7913e8e56649cb413b155bc9381e91f10bbe Mon Sep 17 00:00:00 2001 From: Andrey Nazarov Date: Fri, 11 Jun 2010 15:53:23 +0000 Subject: Fixed gamedir not being changed properly when connecting to a server. Forbid changing gamedir at all while connected to a server. Automatically restart filesystem when user changes gamedir while disconnected. Killed FS_NeedRestart and FS_SafeToRestart. --- source/cl_parse.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'source/cl_parse.c') diff --git a/source/cl_parse.c b/source/cl_parse.c index aa1340d..2a988cf 100644 --- a/source/cl_parse.c +++ b/source/cl_parse.c @@ -766,13 +766,16 @@ static void CL_ParseServerData( void ) { } // never allow demos to change gamedir - // do not set gamedir if connected to local sever, - // since it was already done by SV_InitGame + // do not change gamedir if connected to local sever either, + // as it was already done by SV_InitGame, and changing it + // here will not work since server is now running if( !cls.demo.playback && !sv_running->integer ) { + // pretend it has been set by user, so that 'changed' hook + // gets called and filesystem is restarted Cvar_UserSet( "game", cl.gamedir ); - if( FS_NeedRestart() ) { - CL_RestartFilesystem( qfalse ); - } + + // protect it from modifications while we are connected + fs_game->flags |= CVAR_ROM; } // parse player entity number -- cgit v1.2.3