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/StringCompression.h"
|
||||||
#include "src/WorldStorage/FastNBT.h"
|
#include "src/WorldStorage/FastNBT.h"
|
||||||
#include "GeneratorSetup.h"
|
#include "GeneratorSetup.h"
|
||||||
|
#include "RegionLoader.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -70,7 +71,7 @@ MainWindow::MainWindow(QWidget * parent) :
|
|||||||
|
|
||||||
MainWindow::~MainWindow()
|
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) :
|
RegionLoader::RegionLoader(int a_RegionX, int a_RegionZ, RegionPtr a_Region, ChunkSourcePtr a_ChunkSource) :
|
||||||
m_RegionX(a_RegionX),
|
m_RegionX(a_RegionX),
|
||||||
m_RegionZ(a_RegionZ),
|
m_RegionZ(a_RegionZ),
|
||||||
@ -27,6 +33,10 @@ void RegionLoader::run()
|
|||||||
for (int x = 0; x < 32; x++)
|
for (int x = 0; x < 32; x++)
|
||||||
{
|
{
|
||||||
m_ChunkSource->getChunkBiomes(m_RegionX * 32 + x, m_RegionZ * 32 + z, m_Region->getRelChunk(x, z));
|
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;
|
m_Region->m_IsValid = true;
|
||||||
|
@ -28,6 +28,9 @@ public:
|
|||||||
RegionLoader(int a_RegionX, int a_RegionZ, RegionPtr a_Region, ChunkSourcePtr a_ChunkSource);
|
RegionLoader(int a_RegionX, int a_RegionZ, RegionPtr a_Region, ChunkSourcePtr a_ChunkSource);
|
||||||
virtual ~RegionLoader() {}
|
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:
|
signals:
|
||||||
void loaded(int a_RegionX, int a_RegionZ);
|
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. */
|
/** The chunk source to be used for individual chunks within the region. */
|
||||||
ChunkSourcePtr m_ChunkSource;
|
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