1
0

QtBiomeVisualiser: Added quick shutdown to region loaders.

Now the app shuts down immediately even if regions are queued for loading.
This commit is contained in:
Mattes D 2014-10-28 22:19:24 +01:00
parent 3168a95404
commit 48ac3acc84
3 changed files with 18 additions and 1 deletions

View File

@ -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();
}

View File

@ -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;

View File

@ -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;
};