aboutsummaryrefslogtreecommitdiff
path: root/src/server/collision/Management/MMapManager.h
diff options
context:
space:
mode:
authorjackpoz <giacomopoz@gmail.com>2015-07-19 23:04:04 +0200
committerDDuarte <dnpd.dd@gmail.com>2015-07-21 19:01:44 +0100
commitd41f87e62abef6fa4b0dc23274023d91bdc005d8 (patch)
tree03dbd38681c16d41ecef8dc30165d8d5fe4a127d /src/server/collision/Management/MMapManager.h
parentdb3a35524999c8af1023896be44da48b19607a73 (diff)
Core/Collision: Fix race conditions in mmaps
Fix a race condition in MMapManager happening whenever a map was unloaded. GridUnload enabled was required to trigger the race condition. (cherry picked from commit aa042e94c2f76e5735a8f745c3fcb7dd54cf6c0b) Conflicts: src/server/collision/Management/MMapManager.cpp src/server/collision/Management/MMapManager.h
Diffstat (limited to 'src/server/collision/Management/MMapManager.h')
-rw-r--r--src/server/collision/Management/MMapManager.h5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/server/collision/Management/MMapManager.h b/src/server/collision/Management/MMapManager.h
index b7356716a9d..2b3818601af 100644
--- a/src/server/collision/Management/MMapManager.h
+++ b/src/server/collision/Management/MMapManager.h
@@ -92,9 +92,10 @@ namespace MMAP
class MMapManager
{
public:
- MMapManager() : loadedTiles(0) { }
+ MMapManager() : loadedTiles(0), thread_safe_environment(true) {}
~MMapManager();
+ void InitializeThreadUnsafe(const std::vector<uint32>& mapIds);
bool loadMap(const std::string& basePath, uint32 mapId, int32 x, int32 y);
bool unloadMap(uint32 mapId, int32 x, int32 y);
bool unloadMap(uint32 mapId);
@@ -115,8 +116,10 @@ namespace MMAP
bool loadMapData(uint32 mapId);
uint32 packTileID(int32 x, int32 y);
+ MMapDataSet::const_iterator GetMMapData(uint32 mapId) const;
MMapDataSet loadedMMaps;
uint32 loadedTiles;
+ bool thread_safe_environment;
PhasedTile* LoadTile(uint32 mapId, int32 x, int32 y);
PhaseTileMap _phaseTiles;