summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLukas Pioch <lukas@zgow.de>2015-12-20 01:51:05 +0100
committerLukas Pioch <lukas@zgow.de>2015-12-20 01:51:05 +0100
commit27d6789a83b6752be89af5d1313ddb64c2bfc5ac (patch)
tree30dd68a59171a856782cd5732d1527fdeec78cc0
parentMerge pull request #2779 from cuberite/seadragon91-patch-clang-3.7 (diff)
parentFix race condition (diff)
downloadcuberite-27d6789a83b6752be89af5d1313ddb64c2bfc5ac.tar
cuberite-27d6789a83b6752be89af5d1313ddb64c2bfc5ac.tar.gz
cuberite-27d6789a83b6752be89af5d1313ddb64c2bfc5ac.tar.bz2
cuberite-27d6789a83b6752be89af5d1313ddb64c2bfc5ac.tar.lz
cuberite-27d6789a83b6752be89af5d1313ddb64c2bfc5ac.tar.xz
cuberite-27d6789a83b6752be89af5d1313ddb64c2bfc5ac.tar.zst
cuberite-27d6789a83b6752be89af5d1313ddb64c2bfc5ac.zip
-rw-r--r--src/SpawnPrepare.cpp2
-rw-r--r--src/SpawnPrepare.h4
2 files changed, 4 insertions, 2 deletions
diff --git a/src/SpawnPrepare.cpp b/src/SpawnPrepare.cpp
index 9f1e645b1..ba9fc1117 100644
--- a/src/SpawnPrepare.cpp
+++ b/src/SpawnPrepare.cpp
@@ -119,7 +119,7 @@ void cSpawnPrepare::PreparedChunkCallback(int a_ChunkX, int a_ChunkZ)
float PercentDone = static_cast<float>(m_NumPrepared * 100) / m_MaxIdx;
float ChunkSpeed = static_cast<float>((m_NumPrepared - m_LastReportChunkCount) * 1000) / std::chrono::duration_cast<std::chrono::milliseconds>(Now - m_LastReportTime).count();
LOG("Preparing spawn (%s): %.02f%% (%d/%d; %.02f chunks / sec)",
- m_World.GetName().c_str(), PercentDone, m_NumPrepared, m_MaxIdx, ChunkSpeed
+ m_World.GetName().c_str(), PercentDone, m_NumPrepared.load(std::memory_order_seq_cst), m_MaxIdx, ChunkSpeed
);
m_LastReportTime = Now;
m_LastReportChunkCount = m_NumPrepared;
diff --git a/src/SpawnPrepare.h b/src/SpawnPrepare.h
index cc0da504e..3f4a3b377 100644
--- a/src/SpawnPrepare.h
+++ b/src/SpawnPrepare.h
@@ -1,6 +1,8 @@
#pragma once
+#include <atomic>
+
class cWorld;
@@ -25,7 +27,7 @@ protected:
int m_MaxIdx;
/** Total number of chunks already finished preparing. Preparation finishes when this number reaches m_MaxIdx. */
- int m_NumPrepared;
+ std::atomic<int> m_NumPrepared;
/** Event used to signal that the preparation is finished. */
cEvent m_EvtFinished;