-/*
-===================
-Host_FilterTime
-
-Returns false if the time is too short to run a frame
-===================
-*/
-extern cvar_t cl_avidemo;
-qboolean Host_FilterTime (double time)
-{
- double timecap, timeleft;
- realtime += time;
-
- if (slowmo.value < 0.0f)
- Cvar_SetValue("slowmo", 0.0f);
- if (host_minfps.value < 10.0f)
- Cvar_SetValue("host_minfps", 10.0f);
- if (host_maxfps.value < host_minfps.value)
- Cvar_SetValue("host_maxfps", host_minfps.value);
- if (cl_avidemo.value < 0.1f && cl_avidemo.value != 0.0f)
- Cvar_SetValue("cl_avidemo", 0.0f);
-
- // check if framerate is too high
- if (!cls.timedemo)
- {
- // default to sys_ticrate (server framerate - presumably low) unless we
- // have a good reason to run faster
- timecap = sys_ticrate.value;
- if (cls.state != ca_dedicated)
- {
- if (cl_avidemo.value >= 0.1f)
- timecap = 1.0 / (double)cl_avidemo.value;
- else if (vid_activewindow)
- timecap = 1.0 / host_maxfps.value;
- }
-
- timeleft = oldrealtime + timecap - realtime;
- if (timeleft > 0)
- {
- // don't totally hog the CPU
- if (timeleft >= 0.02)
- Sys_Sleep((int)(timeleft * 1000) - 5);
- return false;
- }
- }
-
- // LordHavoc: copy into host_realframetime as well
- host_realframetime = host_frametime = realtime - oldrealtime;
- oldrealtime = realtime;
-
- if (cls.timedemo)
- {
- // disable time effects
- cl.frametime = host_frametime;
- return true;
- }
-
- if (host_framerate.value > 0)
- host_frametime = host_framerate.value;
- else if (cl_avidemo.value >= 0.1f)
- host_frametime = (1.0 / cl_avidemo.value);
- else
- {
- // don't allow really short frames
- if (host_frametime > (1.0 / host_minfps.value))
- host_frametime = (1.0 / host_minfps.value);
- }
-
- cl.frametime = host_frametime = bound(0, host_frametime * slowmo.value, 0.1f); // LordHavoc: the QC code relies on no less than 10fps
-
- return true;
-}
-
-