diff options
author | jackpoz <giacomopoz@gmail.com> | 2015-07-19 23:04:04 +0200 |
---|---|---|
committer | DDuarte <dnpd.dd@gmail.com> | 2015-07-21 19:01:44 +0100 |
commit | d41f87e62abef6fa4b0dc23274023d91bdc005d8 (patch) | |
tree | 03dbd38681c16d41ecef8dc30165d8d5fe4a127d /src/server/collision/Management/MMapManager.h | |
parent | db3a35524999c8af1023896be44da48b19607a73 (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.h | 5 |
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; |