diff options
author | Thilo Schulz <arny@ats.s.bawue.de> | 2011-08-03 00:58:33 +0000 |
---|---|---|
committer | Tim Angus <tim@ngus.net> | 2013-01-10 23:26:55 +0000 |
commit | 3eae34acfd6561c6dea659f5660c2f3437b28a0b (patch) | |
tree | 81866813974d292c2d45295fb9a39acc18836995 /src | |
parent | b92938cc6f3622058bef8a98bf1c600e40c63c5d (diff) |
Don't do game_restart if game directory changed from "" to "baseq3" or "baseq3" to ""
Diffstat (limited to 'src')
-rw-r--r-- | src/client/cl_main.c | 4 | ||||
-rw-r--r-- | src/qcommon/files.c | 21 |
2 files changed, 20 insertions, 5 deletions
diff --git a/src/client/cl_main.c b/src/client/cl_main.c index cfd41c53..c66285dc 100644 --- a/src/client/cl_main.c +++ b/src/client/cl_main.c @@ -1363,8 +1363,8 @@ static void CL_OldGame(void) { // change back to previous fs_game cls.oldGameSet = qfalse; - Cvar_Set("fs_game", cls.oldGame); - Com_GameRestart(0, qtrue); + Cvar_Set2("fs_game", cls.oldGame, qtrue); + FS_ConditionalRestart(clc.checksumFeed, qfalse); } } diff --git a/src/qcommon/files.c b/src/qcommon/files.c index f18b96a3..10e00f11 100644 --- a/src/qcommon/files.c +++ b/src/qcommon/files.c @@ -3591,12 +3591,27 @@ restart if necessary */ qboolean FS_ConditionalRestart(int checksumFeed, qboolean disconnect) { + int retval; + if(fs_gamedirvar->modified) { - Com_GameRestart(checksumFeed, disconnect); - return qtrue; + if(FS_FilenameCompare(lastValidGame, fs_gamedirvar->string) && + (*lastValidGame || FS_FilenameCompare(fs_gamedirvar->string, com_basegame->string)) && + (*fs_gamedirvar->string || FS_FilenameCompare(lastValidGame, com_basegame->string))) + { + Com_GameRestart(checksumFeed, disconnect); + return qtrue; + } + else + { + fs_gamedirvar->modified = qfalse; + retval = qtrue; + } } - else if(checksumFeed != fs_checksumFeed) + else + retval = qfalse; + + if(checksumFeed != fs_checksumFeed) FS_Restart(checksumFeed); else if(fs_numServerPaks && !fs_reordered) FS_ReorderPurePaks(); |