From 4ceac6f4b1855c06e080e722e6c979ea12bad446 Mon Sep 17 00:00:00 2001 From: divverent Date: Wed, 21 Sep 2011 12:19:06 +0000 Subject: [PATCH] prevent recursive invocation of loading screen when loading the loading screen takes longer than 2 sec git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@11364 d7cf8633-e32d-0410-b094-e92efae38249 --- cl_parse.c | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/cl_parse.c b/cl_parse.c index 18f00dcf..1e81ddef 100644 --- a/cl_parse.c +++ b/cl_parse.c @@ -305,6 +305,7 @@ so the server doesn't disconnect. static unsigned char olddata[NET_MAXMESSAGE]; void CL_KeepaliveMessage (qboolean readmessages) { + static qboolean recursive = false; float time; static double nextmsg = -1; static double nextupdate = -1; @@ -315,18 +316,29 @@ void CL_KeepaliveMessage (qboolean readmessages) qboolean oldbadread; sizebuf_t old; - if(cls.state != ca_dedicated) + qboolean thisrecursive; + + thisrecursive = recursive; + recursive = true; + + if(!thisrecursive) { - if((time = Sys_DoubleTime()) >= nextupdate) + if(cls.state != ca_dedicated) { - SCR_UpdateLoadingScreenIfShown(); - nextupdate = time + 2; + if((time = Sys_DoubleTime()) >= nextupdate) + { + SCR_UpdateLoadingScreenIfShown(); + nextupdate = time + 2; + } } } // no need if server is local and definitely not if this is a demo if (!cls.netcon || cls.protocol == PROTOCOL_QUAKEWORLD || cls.signon >= SIGNONS) + { + recursive = thisrecursive; return; + } if (readmessages) { @@ -366,6 +378,8 @@ void CL_KeepaliveMessage (qboolean readmessages) MSG_WriteChar(&msg, clc_nop); NetConn_SendUnreliableMessage(cls.netcon, &msg, cls.protocol, 10000, false); } + + recursive = thisrecursive; } void CL_ParseEntityLump(char *entdata) -- 2.39.2