diff options
author | Lukas Pioch <lukas@zgow.de> | 2015-12-20 01:51:05 +0100 |
---|---|---|
committer | Lukas Pioch <lukas@zgow.de> | 2015-12-20 01:51:05 +0100 |
commit | 27d6789a83b6752be89af5d1313ddb64c2bfc5ac (patch) | |
tree | 30dd68a59171a856782cd5732d1527fdeec78cc0 | |
parent | Merge pull request #2779 from cuberite/seadragon91-patch-clang-3.7 (diff) | |
parent | Fix race condition (diff) | |
download | cuberite-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.cpp | 2 | ||||
-rw-r--r-- | src/SpawnPrepare.h | 4 |
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; |