summaryrefslogtreecommitdiff
path: root/source/cl_parse.c
diff options
context:
space:
mode:
authorAndrey Nazarov <skuller@skuller.net>2010-06-11 15:53:23 +0000
committerAndrey Nazarov <skuller@skuller.net>2010-06-11 15:53:23 +0000
commit698c7913e8e56649cb413b155bc9381e91f10bbe (patch)
treec5cb81a12a63c113d9c24c7a680f0154cbbf4888 /source/cl_parse.c
parent47dead035e7bb52e9b360af6d9f13cdf5623b97f (diff)
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.
Diffstat (limited to 'source/cl_parse.c')
-rw-r--r--source/cl_parse.c13
1 files changed, 8 insertions, 5 deletions
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