diff options
| author | Vincent-Michael <Vincent_Michael@gmx.de> | 2014-07-25 19:35:11 +0200 |
|---|---|---|
| committer | Vincent-Michael <Vincent_Michael@gmx.de> | 2014-07-25 19:35:11 +0200 |
| commit | 5a8e79528f06d8dabe1d038d8e079be29adf7e1e (patch) | |
| tree | 42f171161adb381638f7ab1c6261f9501f1f3512 /src/tools | |
| parent | 339574e2fdcd654280cd06a38466cab44eab5133 (diff) | |
| parent | c60bdec16046c0bb908e84039f8b1c22368363bd (diff) | |
Merge branch 'master' of github.com:TrinityCore/TrinityCore into 4.3.4
Diffstat (limited to 'src/tools')
| -rw-r--r-- | src/tools/mmaps_generator/CMakeLists.txt | 1 | ||||
| -rw-r--r-- | src/tools/mmaps_generator/MapBuilder.cpp | 19 | ||||
| -rw-r--r-- | src/tools/mmaps_generator/MapBuilder.h | 2 |
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; }; } |
