From: Cloudwalk Date: Tue, 25 May 2021 23:29:49 +0000 (-0400) Subject: Merge branch 'master' into Cloudwalk/json X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=3756e256abc8f600eed211ff0f1319d482818ba7;p=xonotic%2Fdarkplaces.git Merge branch 'master' into Cloudwalk/json --- 3756e256abc8f600eed211ff0f1319d482818ba7 diff --cc host.c index babb5d93,efcba3e2..e60679ce --- a/host.c +++ b/host.c @@@ -301,157 -257,39 +257,41 @@@ static void Host_LoadConfig_f(cmd_state Host_AddConfigText(cmd_local); } - //============================================================================ - /* - ================== - Host_TimeReport - - Returns a time report string, for example for - ================== - */ - const char *Host_TimingReport(char *buf, size_t buflen) - { - return va(buf, buflen, "%.1f%% CPU, %.2f%% lost, offset avg %.1fms, max %.1fms, sdev %.1fms", svs.perf_cpuload * 100, svs.perf_lost * 100, svs.perf_offset_avg * 1000, svs.perf_offset_max * 1000, svs.perf_offset_sdev * 1000); - } - - /* - ================== - Host_Frame - - Runs all active servers - ================== + ======================= + Host_InitLocal + ====================== */ - static void Host_Init(void); - double Host_Frame(double time) - { - double cl_wait, sv_wait; - - TaskQueue_Frame(false); - - // keep the random time dependent, but not when playing demos/benchmarking - if(!*sv_random_seed.string && !host.restless) - rand(); - - NetConn_UpdateSockets(); - - Log_DestBuffer_Flush(); - - // Run any downloads - Curl_Frame(); - - // process console commands - Cbuf_Frame(host.cbuf); - - R_TimeReport("---"); - - sv_wait = SV_Frame(time); - cl_wait = CL_Frame(time); - - // Con_Printf("%6.0f %6.0f\n", cl_wait * 1000000.0, sv_wait * 1000000.0); - - Mem_CheckSentinelsGlobal(); - - if(host.restless) - return 0; - - // if the accumulators haven't become positive yet, wait a while - if (cls.state == ca_dedicated) - return sv_wait * -1000000.0; // dedicated - else if (!sv.active || svs.threaded) - return cl_wait * -1000000.0; // connected to server, main menu, or server is on different thread - else - return max(cl_wait, sv_wait) * -1000000.0; // listen server or singleplayer - } - - static inline void Host_Sleep(double time) - { - double delta, time0; - - if(host_maxwait.value <= 0) - time = min(time, 1000000.0); - else - time = min(time, host_maxwait.value * 1000.0); - if(time < 1) - time = 1; // because we cast to int - - time0 = Sys_DirtyTime(); - if (sv_checkforpacketsduringsleep.integer && !sys_usenoclockbutbenchmark.integer && !svs.threaded) { - NetConn_SleepMicroseconds((int)time); - if (cls.state != ca_dedicated) - NetConn_ClientFrame(); // helps server browser get good ping values - // TODO can we do the same for ServerFrame? Probably not. - } - else - Sys_Sleep((int)time); - delta = Sys_DirtyTime() - time0; - if (delta < 0 || delta >= 1800) - delta = 0; - host.sleeptime += delta; - // R_TimeReport("sleep"); - return; - } - - // Cloudwalk: Most overpowered function declaration... - static inline double Host_UpdateTime (double newtime, double oldtime) - { - double time = newtime - oldtime; - - if (time < 0) - { - // warn if it's significant - if (time < -0.01) - Con_Printf(CON_WARN "Host_UpdateTime: time stepped backwards (went from %f to %f, difference %f)\n", oldtime, newtime, time); - time = 0; - } - else if (time >= 1800) - { - Con_Printf(CON_WARN "Host_UpdateTime: time stepped forward (went from %f to %f, difference %f)\n", oldtime, newtime, time); - time = 0; - } - - return time; - } - - void Host_Main(void) ++void Json_Test_f(cmd_state_t *cmd); + extern cvar_t r_texture_jpeg_fastpicmip; + static void Host_InitLocal (void) { - double time, newtime, oldtime, sleeptime; - - Host_Init(); // Start! - - host.realtime = 0; - oldtime = Sys_DirtyTime(); - - // Main event loop - while(host.state != host_shutdown) - { - // Something bad happened, or the server disconnected - if (setjmp(host.abortframe)) - { - host.state = host_active; // In case we were loading - continue; - } - - newtime = host.dirtytime = Sys_DirtyTime(); - host.realtime += time = Host_UpdateTime(newtime, oldtime); - - sleeptime = Host_Frame(time); - oldtime = newtime; + Cmd_AddCommand(CF_SHARED, "quit", Host_Quit_f, "quit the game"); + Cmd_AddCommand(CF_SHARED, "version", Host_Version_f, "print engine version"); + Cmd_AddCommand(CF_SHARED, "saveconfig", Host_SaveConfig_f, "save settings to config.cfg (or a specified filename) immediately (also automatic when quitting)"); + Cmd_AddCommand(CF_SHARED, "loadconfig", Host_LoadConfig_f, "reset everything and reload configs"); + Cmd_AddCommand(CF_SHARED, "sendcvar", SendCvar_f, "sends the value of a cvar to the server as a sentcvar command, for use by QuakeC"); ++ Cmd_AddCommand(CF_SHARED, "json_test", Json_Test_f, "test the json parser"); + Cvar_RegisterVariable (&cl_maxphysicsframesperserverframe); + Cvar_RegisterVariable (&host_framerate); + Cvar_RegisterCallback (&host_framerate, Host_Framerate_c); + Cvar_RegisterVariable (&host_speeds); + Cvar_RegisterVariable (&host_maxwait); + Cvar_RegisterVariable (&host_isclient); - if (sleeptime >= 1) - { - Host_Sleep(sleeptime); - continue; - } + Cvar_RegisterVariable (&developer); + Cvar_RegisterVariable (&developer_extra); + Cvar_RegisterVariable (&developer_insane); + Cvar_RegisterVariable (&developer_loadfile); + Cvar_RegisterVariable (&developer_loading); + Cvar_RegisterVariable (&developer_entityparsing); - host.framecount++; - } + Cvar_RegisterVariable (×tamps); + Cvar_RegisterVariable (&timeformat); - return; + Cvar_RegisterVariable (&r_texture_jpeg_fastpicmip); } - //============================================================================ - char engineversion[128]; qbool sys_nostdout = false;