diff options
author | Lars <larsh@apache.org> | 2020-11-15 22:58:57 -0800 |
---|---|---|
committer | lhofhansl <larsh@apache.org> | 2020-11-26 20:31:20 -0800 |
commit | f1d72d212a0661588be27003069abf4bd8092e55 (patch) | |
tree | 86de402f9f11ab96af7b6d37ebbfe3c539226487 /src/map.cpp | |
parent | 9bb381ebd387cd783da8d582949bf284a29d9b3a (diff) | |
download | minetest-f1d72d212a0661588be27003069abf4bd8092e55.tar.gz minetest-f1d72d212a0661588be27003069abf4bd8092e55.tar.bz2 minetest-f1d72d212a0661588be27003069abf4bd8092e55.zip |
Avoid generating the same chunk more than once with multiple emerge threads.
Diffstat (limited to 'src/map.cpp')
-rw-r--r-- | src/map.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/map.cpp b/src/map.cpp index ef7eddb39..37b6e9b6b 100644 --- a/src/map.cpp +++ b/src/map.cpp @@ -1345,6 +1345,9 @@ bool ServerMap::initBlockMake(v3s16 blockpos, BlockMakeData *data) v3s16 bpmin = EmergeManager::getContainingChunk(blockpos, csize); v3s16 bpmax = bpmin + v3s16(1, 1, 1) * (csize - 1); + if (!m_chunks_in_progress.insert(bpmin).second) + return false; + bool enable_mapgen_debug_info = m_emerge->enable_mapgen_debug_info; EMERGE_DBG_OUT("initBlockMake(): " PP(bpmin) " - " PP(bpmax)); @@ -1360,7 +1363,6 @@ bool ServerMap::initBlockMake(v3s16 blockpos, BlockMakeData *data) data->seed = getSeed(); data->blockpos_min = bpmin; data->blockpos_max = bpmax; - data->blockpos_requested = blockpos; data->nodedef = m_nodedef; /* @@ -1482,6 +1484,7 @@ void ServerMap::finishBlockMake(BlockMakeData *data, NOTE: Will be saved later. */ //save(MOD_STATE_WRITE_AT_UNLOAD); + m_chunks_in_progress.erase(bpmin); } MapSector *ServerMap::createSector(v2s16 p2d) |