aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/World
diff options
context:
space:
mode:
authorjackpoz <giacomopoz@gmail.com>2015-07-19 19:06:55 +0200
committerjackpoz <giacomopoz@gmail.com>2015-07-19 21:10:27 +0200
commitca7f31c6cdceb7e2921d5d83e1ae22ccb247988d (patch)
treed4b5f46c5f0efb826fa1a85763e06d9fbbe2139d /src/server/game/World
parent51118b07cf6b3f401b27ddc7e697addcc99d9e0b (diff)
Core/Collision: Fix race conditions in vmaps
Fix a race condition in VMapManager2 happening whenever a map was unloaded. GridUnload enabled was required to trigger the race condition.
Diffstat (limited to 'src/server/game/World')
-rw-r--r--src/server/game/World/World.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp
index 7cddfc3f61e..ab109d8dc2f 100644
--- a/src/server/game/World/World.cpp
+++ b/src/server/game/World/World.cpp
@@ -1375,6 +1375,16 @@ void World::SetInitialWorldSettings()
LoadDBCStores(m_dataPath);
DetectDBCLang();
+ if (VMAP::VMapManager2* vmmgr2 = dynamic_cast<VMAP::VMapManager2*>(VMAP::VMapFactory::createOrGetVMapManager()))
+ {
+ std::vector<uint32> mapIds;
+ for (uint32 mapId = 0; mapId < sMapStore.GetNumRows(); mapId++)
+ if (sMapStore.LookupEntry(mapId))
+ mapIds.push_back(mapId);
+
+ vmmgr2->InitializeThreadUnsafe(mapIds);
+ }
+
TC_LOG_INFO("server.loading", "Loading SpellInfo store...");
sSpellMgr->LoadSpellInfoStore();