]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - host.c
Fix setinfo.
[xonotic/darkplaces.git] / host.c
diff --git a/host.c b/host.c
index 0b97a4547183e3c6675ca0bf4ed550aa38ead26c..8fc6c0827ee1471c51f404285da4f425f42940c3 100644 (file)
--- a/host.c
+++ b/host.c
@@ -150,7 +150,9 @@ void Host_Error (const char *error, ...)
        // print out where the crash happened, if it was caused by QC (and do a cleanup)
        PRVM_Crash(SVVM_prog);
        PRVM_Crash(CLVM_prog);
+#ifdef CONFIG_MENU
        PRVM_Crash(MVM_prog);
+#endif
 
        cl.csqc_loaded = false;
        Cvar_SetValueQuick(&csqc_progcrc, -1);
@@ -208,7 +210,7 @@ static void Host_ServerOptions (void)
                else
                {
                        // default players in some games, singleplayer in most
-                       if (gamemode != GAME_GOODVSBAD2 && gamemode != GAME_NEXUIZ && gamemode != GAME_XONOTIC && gamemode != GAME_BATTLEMECH)
+                       if (gamemode != GAME_GOODVSBAD2 && !IS_NEXUIZ_DERIVED(gamemode) && gamemode != GAME_BATTLEMECH)
                                svs.maxclients = 1;
                }
        }
@@ -336,8 +338,10 @@ void Host_LoadConfig_f(void)
 {
        // reset all cvars, commands and aliases to init values
        Cmd_RestoreInitState();
+#ifdef CONFIG_MENU
        // prepend a menu restart command to execute after the config
        Cbuf_InsertText("\nmenu_restart\n");
+#endif
        // reset cvars to their defaults, and then exec startup scripts again
        Host_AddConfigText();
 }
@@ -673,6 +677,7 @@ void Host_Main(void)
        Host_Init();
 
        realtime = 0;
+       host_dirtytime = Sys_DirtyTime();
        for (;;)
        {
                if (setjmp(host_abortframe))
@@ -797,8 +802,12 @@ void Host_Main(void)
                                wait = 1; // because we cast to int
 
                        time0 = Sys_DirtyTime();
-                       if (sv_checkforpacketsduringsleep.integer && !sys_usenoclockbutbenchmark.integer && !svs.threaded)
+                       if (sv_checkforpacketsduringsleep.integer && !sys_usenoclockbutbenchmark.integer && !svs.threaded) {
                                NetConn_SleepMicroseconds((int)wait);
+                               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)wait);
                        delta = Sys_DirtyTime() - time0;
@@ -1010,6 +1019,7 @@ void Host_Main(void)
                        R_TimeReport("client");
 
                        CL_UpdateScreen();
+                       CL_MeshEntities_Reset();
                        R_TimeReport("render");
 
                        if (host_speeds.integer)
@@ -1269,7 +1279,9 @@ static void Host_Init (void)
 
                R_Modules_Init();
                Palette_Init();
+#ifdef CONFIG_MENU
                MR_Init_Commands();
+#endif
                VID_Shared_Init();
                VID_Init();
                Render_Init();
@@ -1304,10 +1316,12 @@ static void Host_Init (void)
        // put up the loading image so the user doesn't stare at a black screen...
        SCR_BeginLoadingPlaque(true);
 
+#ifdef CONFIG_MENU
        if (cls.state != ca_dedicated)
        {
                MR_Init();
        }
+#endif
 
        // check for special benchmark mode
 // COMMANDLINEOPTION: Client: -benchmark <demoname> runs a timedemo and quits, results of any timedemo can be found in gamedir/benchmark.log (for example id1/benchmark.log)
@@ -1347,7 +1361,9 @@ static void Host_Init (void)
 
        if (!sv.active && !cls.demoplayback && !cls.connect_trying)
        {
+#ifdef CONFIG_MENU
                Cbuf_AddText("togglemenu 1\n");
+#endif
                Cbuf_Execute();
        }
 
@@ -1399,9 +1415,11 @@ void Host_Shutdown(void)
        Host_ShutdownServer ();
        SV_UnlockThreadMutex();
 
+#ifdef CONFIG_MENU
        // Shutdown menu
        if(MR_Shutdown)
                MR_Shutdown();
+#endif
 
        // AK shutdown PRVM
        // AK hmm, no PRVM_Shutdown(); yet