]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - host.c
Merged CL_RocketTrail2 into CL_RocketTrail.
[xonotic/darkplaces.git] / host.c
diff --git a/host.c b/host.c
index e48efcc88ba68d7d203900d863cc2b3390921dc4..b1ed19b011dbe26d408ea27d1d0d3229965e3c8e 100644 (file)
--- a/host.c
+++ b/host.c
@@ -96,35 +96,6 @@ cvar_t temp1 = {0, "temp1","0"};
 cvar_t timestamps = {CVAR_SAVE, "timestamps", "0"};
 cvar_t timeformat = {CVAR_SAVE, "timeformat", "[%b %e %X] "};
 
-/*
-================
-Host_EndGame
-================
-*/
-void Host_EndGame (const char *format, ...)
-{
-       va_list argptr;
-       char string[1024];
-
-       va_start (argptr,format);
-       vsprintf (string,format,argptr);
-       va_end (argptr);
-       Con_DPrintf("Host_EndGame: %s\n",string);
-
-       if (sv.active)
-               Host_ShutdownServer (false);
-
-       if (cls.state == ca_dedicated)
-               Sys_Error ("Host_EndGame: %s\n",string);        // dedicated servers exit
-
-       if (cls.demonum != -1)
-               CL_NextDemo ();
-       else
-               CL_Disconnect ();
-
-       longjmp (host_abortserver, 1);
-}
-
 /*
 ================
 Host_Error
@@ -168,8 +139,7 @@ void Host_Error (const char *error, ...)
 
        PRVM_ProcessError();
 
-       if (sv.active)
-               Host_ShutdownServer (false);
+       Host_ShutdownServer (false);
 
        if (cls.state == ca_dedicated)
                Sys_Error ("Host_Error: %s\n",hosterrorstring2);        // dedicated servers exit
@@ -244,7 +214,7 @@ void Host_ServerOptions (void)
                Cvar_SetValueQuick(&deathmatch, 1);
 
        svs.maxclients = numplayers;
-       sv_clients_mempool = Mem_AllocPool("server clients");
+       sv_clients_mempool = Mem_AllocPool("server clients", 0, NULL);
        svs.clients = Mem_Alloc(sv_clients_mempool, sizeof(client_t) * svs.maxclients);
 }
 
@@ -504,17 +474,14 @@ void Host_ShutdownServer(qboolean crash)
        sizebuf_t buf;
        char message[4];
 
+       Con_DPrintf("Host_ShutdownServer\n");
+
        if (!sv.active)
                return;
 
        // print out where the crash happened, if it was caused by QC
        PR_Crash();
 
-       sv.active = false;
-
-// stop all client sounds immediately
-       CL_Disconnect();
-
        NetConn_Heartbeat(2);
        NetConn_Heartbeat(2);
 
@@ -533,6 +500,8 @@ void Host_ShutdownServer(qboolean crash)
 
        NetConn_CloseServerPorts();
 
+       sv.active = false;
+
 //
 // clear structures
 //
@@ -793,12 +762,10 @@ void _Host_Frame (float time)
        if (cls.signon == SIGNONS && cl.viewentity >= 0 && cl.viewentity < MAX_EDICTS && cl_entities[cl.viewentity].state_current.active)
        {
                // LordHavoc: this used to use renderer variables (eww)
-               vec3_t forward, left, up, origin;
-               Matrix4x4_ToVectors(&cl_entities[cl.viewentity].render.matrix, forward, left, up, origin);
-               S_Update(origin, forward, left, up);
+               S_Update(&cl_entities[cl.viewentity].render.matrix);
        }
        else
-               S_Update(vec3_origin, vec3_origin, vec3_origin, vec3_origin);
+               S_Update(&identitymatrix);
 
        CDAudio_Update();
 
@@ -864,6 +831,8 @@ Host_Init
 */
 void Host_Init (void)
 {
+       int i;
+
        // LordHavoc: quake never seeded the random number generator before... heh
        srand(time(NULL));
 
@@ -928,7 +897,16 @@ void Host_Init (void)
                Cbuf_InsertText("exec teu.rc\n");
        else
                Cbuf_InsertText("exec quake.rc\n");
+
+       // check for special benchmark mode
+       i = COM_CheckParm("-benchmark");
+       if (i && i + 1 < com_argc)
+               Cbuf_InsertText(va("timedemo %s\n", com_argv[i + 1]));
+
        Cbuf_Execute();
+
+       // We must wait for the log_file cvar to be initialized to start the log
+       Log_Start ();
 }
 
 
@@ -969,5 +947,8 @@ void Host_Shutdown(void)
                R_Modules_Shutdown();
                VID_Shutdown();
        }
+
+       Sys_Shutdown();
+       Log_Close ();
 }