]> git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - host.c
cmd: Check for empty cbuf when inserting too
[xonotic/darkplaces.git] / host.c
diff --git a/host.c b/host.c
index fa3c4911894d04441ef096a3a94bc59a5d31ab11..aa8fb4c32bf9d712113f2bce98d71ec6d06f77e9 100644 (file)
--- a/host.c
+++ b/host.c
@@ -1,5 +1,6 @@
 /*
 Copyright (C) 1996-1997 Id Software, Inc.
+Copyright (C) 2000-2021 DarkPlaces contributors
 
 This program is free software; you can redistribute it and/or
 modify it under the terms of the GNU General Public License
@@ -37,7 +38,7 @@ Memory is cleared / released when a server or client begins, not when they end.
 
 */
 
-host_t host;
+host_static_t host;
 
 // pretend frames take this amount of time (in seconds), 0 = realtime
 cvar_t host_framerate = {CF_CLIENT | CF_SERVER, "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"};
@@ -127,14 +128,13 @@ void Host_Error (const char *error, ...)
        Cvar_SetValueQuick(&csqc_progcrc, -1);
        Cvar_SetValueQuick(&csqc_progsize, -1);
 
-       SV_LockThreadMutex();
-       SV_Shutdown ();
-       SV_UnlockThreadMutex();
+       if(host.hook.SV_Shutdown)
+               host.hook.SV_Shutdown();
 
        if (cls.state == ca_dedicated)
                Sys_Error ("Host_Error: %s",hosterrorstring2);  // dedicated servers exit
 
-       CL_Disconnect ();
+       CL_Disconnect();
        cls.demonum = -1;
 
        hosterror = false;
@@ -374,7 +374,7 @@ static void Host_Init (void)
        host.hook.Disconnect = NULL;
        host.hook.ToggleMenu = NULL;
        host.hook.CL_Intermission = NULL;
-       host.hook.SV_CanSave = NULL;
+       host.hook.SV_Shutdown = NULL;
 
        host.state = host_init;
 
@@ -587,9 +587,8 @@ void Host_Shutdown(void)
                SV_StopThread();
 
        // shut down local server if active
-       SV_LockThreadMutex();
-       SV_Shutdown ();
-       SV_UnlockThreadMutex();
+       if(host.hook.SV_Shutdown)
+               host.hook.SV_Shutdown();
 
        // AK shutdown PRVM
        // AK hmm, no PRVM_Shutdown(); yet
@@ -684,7 +683,7 @@ static inline void Host_Sleep(double time)
        else
                Sys_Sleep((int)time);
        delta = Sys_DirtyTime() - time0;
-       if (delta < 0 || delta >= 1800) 
+       if (delta < 0 || delta >= 1800)
                delta = 0;
        host.sleeptime += delta;
 //                     R_TimeReport("sleep");