summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorThilo Schulz <arny@ats.s.bawue.de>2011-08-03 00:58:33 +0000
committerTim Angus <tim@ngus.net>2013-01-10 23:26:55 +0000
commit3eae34acfd6561c6dea659f5660c2f3437b28a0b (patch)
tree81866813974d292c2d45295fb9a39acc18836995 /src
parentb92938cc6f3622058bef8a98bf1c600e40c63c5d (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.c4
-rw-r--r--src/qcommon/files.c21
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();