[quake3-commits] r2111 - trunk/code/qcommon

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Sun Jul 31 21:14:26 EDT 2011


Author: thilo
Date: 2011-07-31 21:14:26 -0400 (Sun, 31 Jul 2011)
New Revision: 2111

Modified:
   trunk/code/qcommon/files.c
Log:
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.


Modified: trunk/code/qcommon/files.c
===================================================================
--- trunk/code/qcommon/files.c	2011-07-31 19:24:08 UTC (rev 2110)
+++ trunk/code/qcommon/files.c	2011-08-01 01:14:26 UTC (rev 2111)
@@ -3111,12 +3111,12 @@
 	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
@@ -3889,9 +3889,10 @@
 		Com_GameRestart(checksumFeed, disconnect);
 		return qtrue;
 	}
-
 	else if(checksumFeed != fs_checksumFeed)
 		FS_Restart(checksumFeed);
+	else if(fs_numServerPaks && !fs_reordered)
+		FS_ReorderPurePaks();
 	
 	return qfalse;
 }



More information about the quake3-commits mailing list