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 _queue; std::vector _workerThreads; - std::atomic_bool _cancelationToken; + std::atomic _cancelationToken; std::mutex _lock; std::condition_variable _condition;