X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=host.c;h=cbe96a07f9ba37e6f7e7e5fdcb0eaa8233b83340;hb=bd31e3b2322a06cd4c7e079f7bdb29a4863e61bd;hp=f90173f3413e332f615abb4f8cbd4babf4753743;hpb=3d164924a905fa9a5486f412fd1df10c3c3e9edf;p=xonotic%2Fdarkplaces.git diff --git a/host.c b/host.c index f90173f3..cbe96a07 100644 --- a/host.c +++ b/host.c @@ -61,6 +61,7 @@ double host_starttime = 0; cvar_t host_framerate = {0, "host_framerate","0", "locks frame timing to this value in seconds, 0.05 is 20fps for example, note that this can easily run too fast, use cl_maxfps if you want to limit your framerate instead, or sys_ticrate to limit server speed"}; // shows time used by certain subsystems cvar_t host_speeds = {0, "host_speeds","0", "reports how much time is used in server/graphics/sound"}; +cvar_t host_maxwait = {0, "host_maxwait","1000", "maximum sleep time requested from the operating system in millisecond. Larger sleeps will be done using multiple host_maxwait length sleeps. Lowering this value will increase CPU load, but may help working around problems with accuracy of sleep times."}; cvar_t cl_minfps = {CVAR_SAVE, "cl_minfps", "40", "minimum fps target - while the rendering performance is below this, it will drift toward lower quality"}; cvar_t cl_minfps_fade = {CVAR_SAVE, "cl_minfps_fade", "0.2", "how fast the quality adapts to varying framerate"}; cvar_t cl_minfps_qualitymax = {CVAR_SAVE, "cl_minfps_qualitymax", "1", "highest allowed drawdistance multiplier"}; @@ -71,7 +72,7 @@ cvar_t cl_maxfps = {CVAR_SAVE, "cl_maxfps", "0", "maximum fps cap, 0 = unlimited cvar_t cl_maxfps_alwayssleep = {0, "cl_maxfps_alwayssleep","1", "gives up some processing time to other applications each frame, value in milliseconds, disabled if cl_maxfps is 0"}; cvar_t cl_maxidlefps = {CVAR_SAVE, "cl_maxidlefps", "20", "maximum fps cap when the game is not the active window (makes cpu time available to other programs"}; -cvar_t developer = {CVAR_SAVE, "developer","0", "prints debugging messages and information (recommended for all developers and level designers)"}; +cvar_t developer = {CVAR_SAVE, "developer","0", "shows debugging messages and information (recommended for all developers and level designers); the value -1 also suppresses buffering and logging these messages"}; cvar_t developer_extra = {0, "developer_extra", "0", "prints additional debugging messages, often very verbose!"}; cvar_t developer_insane = {0, "developer_insane", "0", "prints huge streams of information about internal workings, entire contents of files being read/written, etc. Not recommended!"}; cvar_t developer_loadfile = {0, "developer_loadfile","0", "prints name and size of every file loaded via the FS_LoadFile function (which is almost everything)"}; @@ -188,7 +189,7 @@ void Host_ServerOptions (void) else { // default players in some games, singleplayer in most - if (gamemode != GAME_GOODVSBAD2 && gamemode != GAME_NEXUIZ && gamemode != GAME_BATTLEMECH) + if (gamemode != GAME_GOODVSBAD2 && gamemode != GAME_NEXUIZ && gamemode != GAME_XONOTIC && gamemode != GAME_BATTLEMECH) svs.maxclients = 1; } } @@ -209,6 +210,7 @@ Host_InitLocal void Host_SaveConfig_f(void); void Host_LoadConfig_f(void); extern cvar_t sv_writepicture_quality; +extern cvar_t r_texture_jpeg_fastpicmip; static void Host_InitLocal (void) { Cmd_AddCommand("saveconfig", Host_SaveConfig_f, "save settings to config.cfg (or a specified filename) immediately (also automatic when quitting)"); @@ -216,6 +218,7 @@ static void Host_InitLocal (void) Cvar_RegisterVariable (&host_framerate); Cvar_RegisterVariable (&host_speeds); + Cvar_RegisterVariable (&host_maxwait); Cvar_RegisterVariable (&cl_minfps); Cvar_RegisterVariable (&cl_minfps_fade); Cvar_RegisterVariable (&cl_minfps_qualitymax); @@ -237,6 +240,7 @@ static void Host_InitLocal (void) Cvar_RegisterVariable (&timeformat); Cvar_RegisterVariable (&sv_writepicture_quality); + Cvar_RegisterVariable (&r_texture_jpeg_fastpicmip); } @@ -677,6 +681,7 @@ void Host_Main(void) cl.islocalgame = NetConn_IsLocalGame(); // get new key events + Key_EventQueue_Unblock(); SndSys_SendKeyEvents(); Sys_SendKeyEvents(); @@ -715,11 +720,19 @@ void Host_Main(void) wait = cl_timer * -1000000.0; else wait = max(cl_timer, sv_timer) * -1000000.0; - wait = bound(0, wait, 100000); if (!cls.timedemo && wait >= 1) { - double time0 = Sys_DoubleTime(); + double time0; + + if(host_maxwait.value <= 0) + wait = min(wait, 1000000.0); + else + wait = min(wait, host_maxwait.value * 1000.0); + if(wait < 1) + wait = 1; // because we cast to int + + time0 = Sys_DoubleTime(); if (sv_checkforpacketsduringsleep.integer && !sys_usenoclockbutbenchmark.integer) NetConn_SleepMicroseconds((int)wait); else @@ -799,7 +812,7 @@ void Host_Main(void) sv.frametime = advancetime * slowmo.value; if (host_framerate.value) sv.frametime = host_framerate.value; - if (sv.paused || (cl.islocalgame && (key_dest != key_game || key_consoleactive))) + if (sv.paused || (cl.islocalgame && (key_dest != key_game || key_consoleactive || cl.csqc_paused))) sv.frametime = 0; // setup the VM frame @@ -890,7 +903,7 @@ void Host_Main(void) if (host_framerate.value) clframetime = host_framerate.value; - if (cl.paused || (cl.islocalgame && (key_dest != key_game || key_consoleactive))) + if (cl.paused || (cl.islocalgame && (key_dest != key_game || key_consoleactive || cl.csqc_paused))) clframetime = 0; if (cls.timedemo) @@ -1006,6 +1019,7 @@ qboolean sys_nostdout = false; extern void u8_Init(void); extern void Render_Init(void); extern void Mathlib_Init(void); +extern void FS_Init_SelfPack(void); extern void FS_Init(void); extern void FS_Shutdown(void); extern void PR_Cmd_Init(void); @@ -1083,6 +1097,9 @@ static void Host_Init (void) // initialize console window (only used by sys_win.c) Sys_InitConsole(); + // initialize the self-pack (must be before COM_InitGameType as it may add command line options) + FS_Init_SelfPack(); + // detect gamemode from commandline options or executable name COM_InitGameType(); @@ -1097,6 +1114,10 @@ static void Host_Init (void) // initialize filesystem (including fs_basedir, fs_gamedir, -game, scr_screenshot_name) FS_Init(); + // must be after FS_Init + Crypto_Init(); + Crypto_Init_Commands(); + NetConn_Init(); Curl_Init(); //PR_Init(); @@ -1105,6 +1126,7 @@ static void Host_Init (void) Mod_Init(); World_Init(); SV_Init(); + V_Init(); // some cvars needed by server player physics (cl_rollangle etc) Host_InitCommands(); Host_InitLocal(); Host_ServerOptions(); @@ -1124,7 +1146,6 @@ static void Host_Init (void) S_Init(); CDAudio_Init(); Key_Init(); - V_Init(); CL_Init(); } @@ -1273,6 +1294,7 @@ void Host_Shutdown(void) CL_Shutdown(); Sys_Shutdown(); Log_Close(); + Crypto_Shutdown(); FS_Shutdown(); Con_Shutdown(); Memory_Shutdown();