From ced005af386bc5075583eea459060f22da2b136d Mon Sep 17 00:00:00 2001 From: Peace-Maker Date: Thu, 16 Feb 2017 16:03:33 -0700 Subject: [PATCH] Fix hooking server and client twice on map change The engine sets the same server again after mapchanges. --- extension.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/extension.cpp b/extension.cpp index a13dc87..6f4783b 100644 --- a/extension.cpp +++ b/extension.cpp @@ -205,7 +205,10 @@ void SourceTVManager::SelectSourceTVServer(IHLTVServer *hltv) #if SOURCE_ENGINE == SE_CSGO void SourceTVManager::OnAddHLTVServer_Post(IHLTVServer *hltv) { - g_HLTVServers.AddServer(hltv); + // Only hook this server if it's a new one. + HLTVServerWrapper *wrapper = g_HLTVServers.GetWrapper(hltv); + if (!wrapper) + g_HLTVServers.AddServer(hltv); // We already selected some SourceTV server. Keep it. if (hltvserver != nullptr) @@ -256,7 +259,8 @@ void SourceTVManager::OnSetHLTVServer_Post(IHLTVServer *hltv) // Doesn't hurt either.. g_HLTVServers.RemoveServer(hltvserver->GetHLTVServer(), true); } - else + // Only hook this server if it's a new one. + else if (!hltvserver || g_HLTVServers.GetWrapper(hltv) != hltvserver) { g_HLTVServers.AddServer(hltv); }