From 30a33db828a79bd9984dc2ae950c16839b8f07dc Mon Sep 17 00:00:00 2001 From: thilo Date: Sat, 26 Aug 2006 01:45:27 +0000 Subject: - compensate sv_fps for timescale value. - Add a non-dirty-hack fix for client hanging when unpausing a game. git-svn-id: svn://svn.icculus.org/quake3/trunk@870 edf5b092-35ff-0310-97b2-ce42778d08ea --- code/server/sv_main.c | 2 +- code/server/sv_snapshot.c | 11 +++++------ 2 files changed, 6 insertions(+), 7 deletions(-) (limited to 'code/server') diff --git a/code/server/sv_main.c b/code/server/sv_main.c index 152ecbd..b6f11b6 100644 --- a/code/server/sv_main.c +++ b/code/server/sv_main.c @@ -798,7 +798,7 @@ void SV_Frame( int msec ) { if ( sv_fps->integer < 1 ) { Cvar_Set( "sv_fps", "10" ); } - frameMsec = 1000 / sv_fps->integer ; + frameMsec = 1000 / sv_fps->integer * com_timescale->value; sv.timeResidual += msec; diff --git a/code/server/sv_snapshot.c b/code/server/sv_snapshot.c index 30001a1..da69850 100644 --- a/code/server/sv_snapshot.c +++ b/code/server/sv_snapshot.c @@ -587,12 +587,12 @@ void SV_SendMessageToClient( msg_t *msg, client_t *client ) { // TTimo - https://zerowing.idsoftware.com/bugzilla/show_bug.cgi?id=491 // added sv_lanForceRate check if ( client->netchan.remoteAddress.type == NA_LOOPBACK || (sv_lanForceRate->integer && Sys_IsLANAddress (client->netchan.remoteAddress)) ) { - client->nextSnapshotTime = svs.time + (1000/sv_fps->integer); + client->nextSnapshotTime = svs.time + (1000.0 / sv_fps->integer * com_timescale->value); return; } // normal rate / snapshotMsec calculation - rateMsec = SV_RateMsec( client, msg->cursize ); + rateMsec = SV_RateMsec(client, msg->cursize); if ( rateMsec < client->snapshotMsec ) { // never send more packets than this, no matter what the rate is at @@ -602,16 +602,15 @@ void SV_SendMessageToClient( msg_t *msg, client_t *client ) { client->rateDelayed = qtrue; } - client->nextSnapshotTime = svs.time + rateMsec; + client->nextSnapshotTime = svs.time + rateMsec * com_timescale->value; // don't pile up empty snapshots while connecting if ( client->state != CS_ACTIVE ) { // a gigantic connection message may have already put the nextSnapshotTime // more than a second away, so don't shorten it // do shorten if client is downloading - if ( !*client->downloadName && client->nextSnapshotTime < svs.time + 1000 ) { - client->nextSnapshotTime = svs.time + 1000; - } + if (!*client->downloadName && client->nextSnapshotTime < svs.time + 1000 * com_timescale->value) + client->nextSnapshotTime = svs.time + 1000 * com_timescale->value; } } -- cgit v1.2.3