From 4e87659a1d7fc856a61f21b7264afb79973196d6 Mon Sep 17 00:00:00 2001 From: tyabus Date: Sun, 12 Mar 2023 21:17:49 +0600 Subject: [PATCH] engine: restore sv_hibernate_when_empty --- engine/sv_main.cpp | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/engine/sv_main.cpp b/engine/sv_main.cpp index 1d104966..80c1cc4d 100644 --- a/engine/sv_main.cpp +++ b/engine/sv_main.cpp @@ -80,8 +80,8 @@ extern CNetworkStringTableContainer *networkStringTableContainerServer; extern CNetworkStringTableContainer *networkStringTableContainerClient; -//void OnHibernateWhenEmptyChanged( IConVar *var, const char *pOldValue, float flOldValue ); -//ConVar sv_hibernate_when_empty( "sv_hibernate_when_empty", "1", 0, "Puts the server into extremely low CPU usage mode when no clients connected", OnHibernateWhenEmptyChanged ); +static void OnHibernateWhenEmptyChanged( IConVar *var, const char *pOldValue, float flOldValue ); +ConVar sv_hibernate_when_empty( "sv_hibernate_when_empty", "1", 0, "Puts the server into extremely low CPU usage mode when no clients connected", OnHibernateWhenEmptyChanged ); //ConVar sv_hibernate_ms( "sv_hibernate_ms", "20", 0, "# of milliseconds to sleep per frame while hibernating" ); //ConVar sv_hibernate_ms_vgui( "sv_hibernate_ms_vgui", "20", 0, "# of milliseconds to sleep per frame while hibernating but running the vgui dedicated server frontend" ); //static ConVar sv_hibernate_postgame_delay( "sv_hibernate_postgame_delay", "5", 0, "# of seconds to wait after final client leaves before hibernating."); @@ -1541,13 +1541,13 @@ CPureServerWhitelist * CGameServer::GetPureServerWhitelist() const return m_pPureServerWhitelist; } -//void OnHibernateWhenEmptyChanged( IConVar *var, const char *pOldValue, float flOldValue ) -//{ -// // We only need to do something special if we were preventing hibernation -// // with sv_hibernate_when_empty but we would otherwise have been hibernating. -// // In that case, punt all connected clients. -// sv.UpdateHibernationState( ); -//} +static void OnHibernateWhenEmptyChanged( IConVar *var, const char *pOldValue, float flOldValue ) +{ + // We only need to do something special if we were preventing hibernation + // with sv_hibernate_when_empty but we would otherwise have been hibernating. + // In that case, punt all connected clients. + sv.UpdateHibernationState( ); +} static bool s_bExitWhenEmpty = false; static ConVar sv_memlimit( "sv_memlimit", "0", 0, @@ -1753,8 +1753,7 @@ void CGameServer::UpdateHibernationState() s_bExitWhenEmpty = true; } - //SetHibernating( sv_hibernate_when_empty.GetBool() && hibernateFromGCServer && !bHaveAnyClients ); - SetHibernating( hibernateFromGCServer && !bHaveAnyClients ); + SetHibernating( sv_hibernate_when_empty.GetBool() && hibernateFromGCServer && !bHaveAnyClients ); } void CGameServer::FinishRestore()