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:
parent
3168a95404
commit
48ac3acc84
@ -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();
|
||||
}
|
||||
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
};
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user