aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Maps/DynamicMMapTileBuilder.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/game/Maps/DynamicMMapTileBuilder.cpp')
-rw-r--r--src/server/game/Maps/DynamicMMapTileBuilder.cpp6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/server/game/Maps/DynamicMMapTileBuilder.cpp b/src/server/game/Maps/DynamicMMapTileBuilder.cpp
index 49205597853..984dc4a7edc 100644
--- a/src/server/game/Maps/DynamicMMapTileBuilder.cpp
+++ b/src/server/game/Maps/DynamicMMapTileBuilder.cpp
@@ -165,7 +165,7 @@ struct TileCache
private:
void OnCacheCleanupTimerTick(boost::system::error_code const& error)
{
- if (error)
+ if (error || !_builderThread.joinable() /*shutting down*/)
return;
TimePoint now = GameTime::Now();
@@ -176,7 +176,7 @@ private:
void RemoveOldCacheEntries(TimePoint oldestPreservedEntryTimestamp)
{
- std::lock_guard lock(TilesMutex);
+ std::scoped_lock lock(TilesMutex);
Trinity::Containers::EraseIf(Tiles, [=](std::unordered_map<TileCacheKey, Tile>::value_type const& kv)
{
return kv.second.LastAccessed < oldestPreservedEntryTimestamp;
@@ -306,7 +306,7 @@ std::weak_ptr<DynamicTileBuilder::AsyncTileResult> DynamicTileBuilder::BuildTile
cacheKey.CachedHash = std::hash<TileCacheKey>::Compute(cacheKey);
TileCache* tileCache = TileCache::Instance();
- std::lock_guard lock(tileCache->TilesMutex);
+ std::scoped_lock lock(tileCache->TilesMutex);
auto [itr, isNew] = tileCache->Tiles.try_emplace(std::move(cacheKey));
itr->second.LastAccessed = GameTime::Now();
if (!isNew)