cvar_t host_framerate = {0, "host_framerate","0", "locks frame timing to this value in seconds, 0.05 is 20fps for example, note that this can easily run too fast, use cl_maxfps if you want to limit your framerate instead, or sys_ticrate to limit server speed"};
// shows time used by certain subsystems
cvar_t host_speeds = {0, "host_speeds","0", "reports how much time is used in server/graphics/sound"};
-cvar_t host_sleep = {0, "host_sleep","1", "gives up some processing time to other applications each frame, value in milliseconds"};
+cvar_t host_sleep = {0, "host_sleep","0", "gives up some processing time to other applications each frame, value in milliseconds"};
cvar_t cl_minfps = {CVAR_SAVE, "cl_minfps", "40", "minimum fps target - while the rendering performance is below this, it will drift toward lower quality"};
cvar_t cl_minfps_fade = {CVAR_SAVE, "cl_minfps_fade", "0.2", "how fast the quality adapts to varying framerate"};
cvar_t cl_minfps_qualitymax = {CVAR_SAVE, "cl_minfps_qualitymax", "1", "highest allowed drawdistance multiplier"};
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();
// 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);
pass1+pass2+pass3, pass1, pass2, pass3);
}
wait = bound(0, host_sleep.value * 1000, 100000);
- if (wait >= 1)
+ if (!cls.timedemo && wait >= 1)
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;
}
Cmd_Shutdown();
+ Key_Shutdown();
CL_Shutdown();
Sys_Shutdown();
Log_Close();
FS_Shutdown();
+ Con_Shutdown();
Memory_Shutdown();
}