Our Q2 code is a little fragile. Give it its assumptions to avoid hideousness.

git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@6329 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
Spoike 2023-01-09 05:13:50 +00:00
parent 1765f15059
commit 4dc4dd33e7

View file

@ -6324,6 +6324,7 @@ double Host_Frame (double time)
extern int r_blockvidrestart;
static qboolean hadwork;
qboolean vrsync;
qboolean mustrenderbeforeread;
RSpeedLocals();
@ -6536,6 +6537,10 @@ double Host_Frame (double time)
cl.do_lerp_players = cl_lerp_players.ival || (cls.demoplayback==DPB_MVD || cls.demoplayback == DPB_EZTV) || (cls.demoplayback && !cl_nolerp.ival && !cls.timedemo);
CL_AllowIndependantSendCmd(false);
mustrenderbeforeread = cls.protocol == CP_QUAKE2; //FIXME: quake2 MUST render a frame (or a later one) before it can read any acks from the server, otherwise its prediction screws up. I'm too lazy to rewrite that right now.
// if (mustrenderbeforeread)
CL_ReadPackets(); //this should be redundant.
CL_RequestNextDownload();
// send intentions now
@ -6593,9 +6598,12 @@ double Host_Frame (double time)
#endif
// fetch results from server... now that we've run it.
CL_AllowIndependantSendCmd(false);
CL_ReadPackets ();
CL_AllowIndependantSendCmd(true);
if (!mustrenderbeforeread)
{
CL_AllowIndependantSendCmd(false);
CL_ReadPackets ();
CL_AllowIndependantSendCmd(true);
}
CL_CalcClientTime();