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
committerjackpoz <giacomopoz@gmail.com>2015-07-20 20:52:36 +0200
commitaa042e94c2f76e5735a8f745c3fcb7dd54cf6c0b (patch)
treebce38c07fb3b2659a5ccf12d150e50181d66ed58 /src/server/collision/Management/MMapManager.h
parent3c4484d782ace3e3662840dfa2574f334c0e8e9a (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.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 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;
};
}