diff options
| author | jackpoz <giacomopoz@gmail.com> | 2015-07-19 23:04:04 +0200 |
|---|---|---|
| committer | jackpoz <giacomopoz@gmail.com> | 2015-07-20 20:52:36 +0200 |
| commit | aa042e94c2f76e5735a8f745c3fcb7dd54cf6c0b (patch) | |
| tree | bce38c07fb3b2659a5ccf12d150e50181d66ed58 /src/server/collision/Management/MMapManager.h | |
| parent | 3c4484d782ace3e3662840dfa2574f334c0e8e9a (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.
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 ac01a3c5693..f51f6ecd981 100644 --- a/src/server/collision/Management/MMapManager.h +++ b/src/server/collision/Management/MMapManager.h @@ -60,9 +60,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); @@ -78,8 +79,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; }; } |
