summaryrefslogtreecommitdiffstats
path: root/Tools/QtBiomeVisualiser
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--Tools/QtBiomeVisualiser/MainWindow.cpp3
-rw-r--r--Tools/QtBiomeVisualiser/RegionLoader.cpp10
-rw-r--r--Tools/QtBiomeVisualiser/RegionLoader.h6
3 files changed, 18 insertions, 1 deletions
diff --git a/Tools/QtBiomeVisualiser/MainWindow.cpp b/Tools/QtBiomeVisualiser/MainWindow.cpp
index 4437d9ceb..e6e951b60 100644
--- a/Tools/QtBiomeVisualiser/MainWindow.cpp
+++ b/Tools/QtBiomeVisualiser/MainWindow.cpp
@@ -14,6 +14,7 @@
#include "src/StringCompression.h"
#include "src/WorldStorage/FastNBT.h"
#include "GeneratorSetup.h"
+#include "RegionLoader.h"
@@ -70,7 +71,7 @@ MainWindow::MainWindow(QWidget * parent) :
MainWindow::~MainWindow()
{
-
+ RegionLoader::shutdown();
}
diff --git a/Tools/QtBiomeVisualiser/RegionLoader.cpp b/Tools/QtBiomeVisualiser/RegionLoader.cpp
index 771c1bbac..2a318098b 100644
--- a/Tools/QtBiomeVisualiser/RegionLoader.cpp
+++ b/Tools/QtBiomeVisualiser/RegionLoader.cpp
@@ -7,6 +7,12 @@
+volatile bool RegionLoader::m_IsShuttingDown = false;
+
+
+
+
+
RegionLoader::RegionLoader(int a_RegionX, int a_RegionZ, RegionPtr a_Region, ChunkSourcePtr a_ChunkSource) :
m_RegionX(a_RegionX),
m_RegionZ(a_RegionZ),
@@ -27,6 +33,10 @@ void RegionLoader::run()
for (int x = 0; x < 32; x++)
{
m_ChunkSource->getChunkBiomes(m_RegionX * 32 + x, m_RegionZ * 32 + z, m_Region->getRelChunk(x, z));
+ if (m_IsShuttingDown)
+ {
+ return;
+ }
}
}
m_Region->m_IsValid = true;
diff --git a/Tools/QtBiomeVisualiser/RegionLoader.h b/Tools/QtBiomeVisualiser/RegionLoader.h
index 5a993f5ca..6bbb4aa60 100644
--- a/Tools/QtBiomeVisualiser/RegionLoader.h
+++ b/Tools/QtBiomeVisualiser/RegionLoader.h
@@ -28,6 +28,9 @@ public:
RegionLoader(int a_RegionX, int a_RegionZ, RegionPtr a_Region, ChunkSourcePtr a_ChunkSource);
virtual ~RegionLoader() {}
+ /** Signals to all loaders that the app is shutting down and the loading should be aborted. */
+ static void shutdown() { m_IsShuttingDown = true; }
+
signals:
void loaded(int a_RegionX, int a_RegionZ);
@@ -43,6 +46,9 @@ private:
/** The chunk source to be used for individual chunks within the region. */
ChunkSourcePtr m_ChunkSource;
+
+ /** Flag that is set upon app exit to terminate the queued loaders faster. */
+ static volatile bool m_IsShuttingDown;
};