- //-------------------
- //
- // client operations
- //
- //-------------------
-
- if (cls.state != ca_dedicated && (cl_timer > 0 || cls.timedemo || ((vid_activewindow ? cl_maxfps : cl_maxidlefps).value < 1)))
- {
- R_TimeReport("---");
- Collision_Cache_NewFrame();
- R_TimeReport("photoncache");
-#ifdef CONFIG_VIDEO_CAPTURE
- // decide the simulation time
- if (cls.capturevideo.active)
- {
- //***
- if (cls.capturevideo.realtime)
- clframetime = cl.realframetime = max(cl_timer, 1.0 / cls.capturevideo.framerate);
- else
- {
- clframetime = 1.0 / cls.capturevideo.framerate;
- cl.realframetime = max(cl_timer, clframetime);
- }
- }
- else if (vid_activewindow && cl_maxfps.value >= 1 && !cls.timedemo)
-
-#else
- if (vid_activewindow && cl_maxfps.value >= 1 && !cls.timedemo)
-#endif
- {
- clframetime = cl.realframetime = max(cl_timer, 1.0 / cl_maxfps.value);
- // when running slow, we need to sleep to keep input responsive
- wait = bound(0, cl_maxfps_alwayssleep.value * 1000, 100000);
- if (wait > 0)
- Sys_Sleep((int)wait);
- }
- else if (!vid_activewindow && cl_maxidlefps.value >= 1 && !cls.timedemo)
- clframetime = cl.realframetime = max(cl_timer, 1.0 / cl_maxidlefps.value);
- else
- clframetime = cl.realframetime = cl_timer;
-
- // apply slowmo scaling
- clframetime *= cl.movevars_timescale;
- // scale playback speed of demos by slowmo cvar
- if (cls.demoplayback)
- {
- clframetime *= host_timescale.value;
- // if demo playback is paused, don't advance time at all
- if (cls.demopaused)
- clframetime = 0;
- }
- else
- {
- // host_framerate overrides all else
- if (host_framerate.value)
- clframetime = host_framerate.value;
-
- if (cl.paused || (cl.islocalgame && (key_dest != key_game || key_consoleactive || cl.csqc_paused)))
- clframetime = 0;
- }
-
- if (cls.timedemo)
- clframetime = cl.realframetime = cl_timer;
-
- // deduct the frame time from the accumulator
- cl_timer -= cl.realframetime;
-
- cl.oldtime = cl.time;
- cl.time += clframetime;
-
- // update video
- if (host_speeds.integer)
- time1 = Sys_DirtyTime();
- R_TimeReport("pre-input");