aboutsummaryrefslogtreecommitdiff
path: root/src/tools
diff options
context:
space:
mode:
Diffstat (limited to 'src/tools')
-rw-r--r--src/tools/mmaps_generator/CMakeLists.txt1
-rw-r--r--src/tools/mmaps_generator/MapBuilder.cpp19
-rw-r--r--src/tools/mmaps_generator/MapBuilder.h2
3 files changed, 14 insertions, 8 deletions
diff --git a/src/tools/mmaps_generator/CMakeLists.txt b/src/tools/mmaps_generator/CMakeLists.txt
index a2b729ca998..8661c035c8e 100644
--- a/src/tools/mmaps_generator/CMakeLists.txt
+++ b/src/tools/mmaps_generator/CMakeLists.txt
@@ -48,6 +48,7 @@ target_link_libraries(mmaps_generator
Detour
${BZIP2_LIBRARIES}
${ZLIB_LIBRARIES}
+ ${CMAKE_THREAD_LIBS_INIT}
${Boost_LIBRARIES}
)
diff --git a/src/tools/mmaps_generator/MapBuilder.cpp b/src/tools/mmaps_generator/MapBuilder.cpp
index 01a342249fd..94b5f3607cf 100644
--- a/src/tools/mmaps_generator/MapBuilder.cpp
+++ b/src/tools/mmaps_generator/MapBuilder.cpp
@@ -171,20 +171,25 @@ namespace MMAP
{
while (1)
{
- uint32 mapId;
+ uint32* mapId = nullptr;
_queue.WaitAndPop(mapId);
if (_cancelationToken)
return;
- buildMap(mapId);
+ if (!mapId) // shouldn't happen?
+ continue;
+
+ buildMap(*mapId);
+
+ delete mapId;
}
}
void MapBuilder::buildAllMaps(int threads)
{
- for (size_t i = 0; i < threads; ++i)
+ for (int i = 0; i < threads; ++i)
{
_workerThreads.push_back(std::thread(&MapBuilder::WorkerThread, this));
}
@@ -196,13 +201,13 @@ namespace MMAP
for (TileList::iterator it = m_tiles.begin(); it != m_tiles.end(); ++it)
{
- uint32 mapID = it->m_mapId;
- if (!shouldSkipMap(mapID))
+ uint32 mapId = it->m_mapId;
+ if (!shouldSkipMap(mapId))
{
if (threads > 0)
- _queue.Push(mapID);
+ _queue.Push(new uint32(mapId));
else
- buildMap(mapID);
+ buildMap(mapId);
}
}
diff --git a/src/tools/mmaps_generator/MapBuilder.h b/src/tools/mmaps_generator/MapBuilder.h
index 1d688ccfa77..c2168d048b4 100644
--- a/src/tools/mmaps_generator/MapBuilder.h
+++ b/src/tools/mmaps_generator/MapBuilder.h
@@ -143,7 +143,7 @@ namespace MMAP
rcContext* m_rcContext;
std::vector<std::thread> _workerThreads;
- ProducerConsumerQueue<uint32> _queue;
+ ProducerConsumerQueue<uint32*> _queue;
std::atomic<bool> _cancelationToken;
};
}