aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/game/Maps/MapUpdater.cpp4
-rw-r--r--src/server/game/Maps/MapUpdater.h2
2 files changed, 4 insertions, 2 deletions
diff --git a/src/server/game/Maps/MapUpdater.cpp b/src/server/game/Maps/MapUpdater.cpp
index 4ab95d87d48..0a007b3484e 100644
--- a/src/server/game/Maps/MapUpdater.cpp
+++ b/src/server/game/Maps/MapUpdater.cpp
@@ -45,7 +45,7 @@ class MapUpdateRequest
}
};
-MapUpdater::MapUpdater(): pending_requests(0) { }
+MapUpdater::MapUpdater() : pending_requests(0), _cancelationToken(false) {}
MapUpdater::~MapUpdater()
{
@@ -62,6 +62,8 @@ void MapUpdater::activate(size_t num_threads)
void MapUpdater::deactivate()
{
+ _cancelationToken = true;
+
wait();
_queue.Cancel();
diff --git a/src/server/game/Maps/MapUpdater.h b/src/server/game/Maps/MapUpdater.h
index ff1d85a23e9..7b9c4443a54 100644
--- a/src/server/game/Maps/MapUpdater.h
+++ b/src/server/game/Maps/MapUpdater.h
@@ -51,7 +51,7 @@ class MapUpdater
ProducerConsumerQueue <MapUpdateRequest*> _queue;
std::vector<std::thread> _workerThreads;
- std::atomic_bool _cancelationToken;
+ std::atomic<bool> _cancelationToken;
std::mutex _lock;
std::condition_variable _condition;