+ 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;
+ }
+ }