#include <time.h>
#include "quakedef.h"
+#include "libcurl.h"
#include "cdaudio.h"
#include "cl_video.h"
#include "progsvm.h"
static void Host_Init(void);
void Host_Main(void)
{
- double frameoldtime, framenewtime, frametime, cl_timer, sv_timer;
+ static double time1 = 0;
+ static double time2 = 0;
+ static double time3 = 0;
+ // these are static because of setjmp/longjmp warnings in mingw32 gcc 2.95.3
+ static double frameoldtime, framenewtime, frametime, cl_timer, sv_timer;
Host_Init();
framenewtime = Sys_DoubleTime();
for (;;)
{
- static double time1 = 0;
- static double time2 = 0;
- static double time3 = 0;
+ if (setjmp(host_abortframe))
+ continue; // something bad happened, or the server disconnected
frameoldtime = framenewtime;
framenewtime = Sys_DoubleTime();
cl_timer += frametime;
sv_timer += frametime;
- if (setjmp(host_abortframe))
- continue; // something bad happened, or the server disconnected
-
if (slowmo.value < 0)
Cvar_SetValue("slowmo", 0);
if (host_framerate.value < 0.00001 && host_framerate.value != 0)
NetConn_UpdateSockets();
+ Curl_Run();
+
//-------------------
//
// server operations
//
//-------------------
+ // check for commands typed to the host
+ Host_GetConsoleCommands();
+
if (sv_timer > 0)
{
if (!sv.active)
// the middle of Host_Frame
NetConn_ServerFrame();
- // check for commands typed to the host
- Host_GetConsoleCommands();
-
// run the world state
// don't allow simulation to run too fast or too slow or logic glitches can occur
// stop running server frames if the wall time reaches this value
- if (sys_ticrate.value <= 0 || (cl.islocalgame && !sv_fixedframeratesingleplayer.integer))
+ if (sys_ticrate.value <= 0)
advancetime = sv_timer;
+ else if (cl.islocalgame && !sv_fixedframeratesingleplayer.integer)
+ {
+ // synchronize to the client frametime, but no less than 10ms and no more than sys_ticrate
+ advancetime = bound(0.01, cl_timer, sys_ticrate.value);
+ framelimit = 10;
+ aborttime = Sys_DoubleTime() + 0.1;
+ }
else
{
advancetime = sys_ticrate.value;
// decide the simulation time
if (!cls.timedemo)
{
- if (cls.capturevideo_active && !cls.capturevideo_soundfile)
+ if (cls.capturevideo_active)// && !cls.capturevideo_soundfile)
{
frametime = 1.0 / cls.capturevideo_framerate;
cl.realframetime = max(cl.realframetime, frametime);
csqc_usecsqclistener = false;
}
else
- S_Update(&r_refdef.viewentitymatrix);
+ S_Update(&r_view.matrix);
CDAudio_Update();
}
// initialize various cvars that could not be initialized earlier
Memory_Init_Commands();
Con_Init_Commands();
+ Curl_Init_Commands();
Cmd_Init_Commands();
Sys_Init_Commands();
COM_Init_Commands();
Mathlib_Init();
NetConn_Init();
+ Curl_Init();
//PR_Init();
//PR_Cmd_Init();
PRVM_Init();
CDAudio_Shutdown ();
S_Terminate ();
+ Curl_Shutdown ();
NetConn_Shutdown ();
//PR_Shutdown ();