NetConn_CloseServerPorts();
- if(sv.csqc_progdata)
- {
- Con_DPrintf("Unloading CSQC data.\n");
- Mem_Free(sv.csqc_progdata);
- if(sv.csqc_progdata_deflated)
- Mem_Free(sv.csqc_progdata_deflated);
- }
-
sv.active = false;
//
// clear structures
Returns a time report string, for example for
==================
*/
-const char *Host_TimingReport()
+const char *Host_TimingReport(void)
{
return va("%.1f%% CPU, %.2f%% lost, offset avg %.1fms, max %.1fms, sdev %.1fms", svs.perf_cpuload * 100, svs.perf_lost * 100, svs.perf_offset_avg * 1000, svs.perf_offset_max * 1000, svs.perf_offset_sdev * 1000);
}
for (;;)
{
if (setjmp(host_abortframe))
+ {
+ SCR_ClearLoadingScreen(false);
continue; // something bad happened, or the server disconnected
+ }
oldrealtime = realtime;
realtime = Sys_DoubleTime();
cl.islocalgame = NetConn_IsLocalGame();
- // begin gathering mouse input
- in_mouse_x = in_mouse_y = 0;
-
// get new key events
Sys_SendKeyEvents();
//
//-------------------
- if (cls.state != ca_dedicated && (cl_timer > 0 || cls.timedemo))
+ if (cls.state != ca_dedicated && (cl_timer > 0 || cls.timedemo || cl_maxfps.value < 1))
{
// decide the simulation time
if (cls.capturevideo.active)
{
+ //***
if (cls.capturevideo.realtime)
clframetime = cl.realframetime = max(cl_timer, 1.0 / cls.capturevideo.framerate);
else
if (host_framerate.value)
clframetime = host_framerate.value;
+ if (cl.paused || (cl.islocalgame && (key_dest != key_game || key_consoleactive)))
+ clframetime = 0;
+
if (cls.timedemo)
clframetime = cl.realframetime = cl_timer;
cl.oldtime = cl.time;
cl.time += clframetime;
+ // update video
+ if (host_speeds.integer)
+ time1 = Sys_DoubleTime();
+
// Collect input into cmd
CL_Input();
// update client world (interpolate entities, create trails, etc)
CL_UpdateWorld();
- // update video
- if (host_speeds.integer)
- time1 = Sys_DoubleTime();
-
CL_Video_Frame();
CL_Gecko_Frame();
CDAudio_Update();
+ // reset gathering of mouse input
+ in_mouse_x = in_mouse_y = 0;
+
if (host_speeds.integer)
{
pass1 = (int)((time1 - time3)*1000000);
Sys_Sleep((int)wait);
}
+#if MEMPARANOIA
+ Mem_CheckSentinelsGlobal();
+#endif
+
// if there is some time remaining from this frame, reset the timers
if (cl_timer >= 0)
cl_timer = 0;
srand(time(NULL));
// FIXME: this is evil, but possibly temporary
+ // LordHavoc: doesn't seem very temporary...
+ // LordHavoc: enabled this by default on debug
+#ifndef DEBUG
// COMMANDLINEOPTION: Console: -developer enables warnings and other notices (RECOMMENDED for mod developers)
if (COM_CheckParm("-developer"))
+#endif
{
developer.value = developer.integer = 1;
developer.string = "1";
}
Cmd_Shutdown();
+ Key_Shutdown();
CL_Shutdown();
Sys_Shutdown();
Log_Close();
FS_Shutdown();
+ Con_Shutdown();
Memory_Shutdown();
}