summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThilo Schulz <arny@ats.s.bawue.de>2011-08-01 01:14:26 +0000
committerTim Angus <tim@ngus.net>2013-01-10 22:55:17 +0000
commit500076c2e63329331c2a98e88cfa34f8044a7b76 (patch)
tree882cba19e97b9999e0c710463287ab7911f28314
parentc3227572a22b7fddf31ba84c13aef846a8bb7675 (diff)
Fix pak order when reconnecting to a server. When /connect to the same server is issued while already connected, an initial call to CL_Disconnect will remove all pak file references and reset the pak order. Reordering only occurs through FS_Restart, which in turn is called when checksum feed changes. Because we reconnect to the same server, checksum feed never changes and pak file order is not restored to server order again. With certain pak file constellations between client/server, this may result in an inability to load files from paks which are not correctly detected as referenced paks.
-rw-r--r--src/qcommon/files.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/qcommon/files.c b/src/qcommon/files.c
index 7ea04c12..f18b96a3 100644
--- a/src/qcommon/files.c
+++ b/src/qcommon/files.c
@@ -3038,12 +3038,12 @@ static void FS_ReorderPurePaks( void )
searchpath_t **p_insert_index, // for linked list reordering
**p_previous; // when doing the scan
+ fs_reordered = qfalse;
+
// only relevant when connected to pure server
if ( !fs_numServerPaks )
return;
- fs_reordered = qfalse;
-
p_insert_index = &fs_searchpaths; // we insert in order at the beginning of the list
for ( i = 0 ; i < fs_numServerPaks ; i++ ) {
p_previous = p_insert_index; // track the pointer-to-current-item
@@ -3596,9 +3596,10 @@ qboolean FS_ConditionalRestart(int checksumFeed, qboolean disconnect)
Com_GameRestart(checksumFeed, disconnect);
return qtrue;
}
-
else if(checksumFeed != fs_checksumFeed)
FS_Restart(checksumFeed);
+ else if(fs_numServerPaks && !fs_reordered)
+ FS_ReorderPurePaks();
return qfalse;
}