1
0
Fork 0
mirror of https://github.com/luanti-org/luanti.git synced 2025-06-27 16:36:03 +00:00

Replace SimpleThread by JThread now implementing same features

This commit is contained in:
sapier 2013-12-03 23:32:03 +01:00
parent 9772322613
commit e9e9fd7c3f
9 changed files with 30 additions and 88 deletions

View file

@ -47,7 +47,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include "mapgen_math.h"
class EmergeThread : public SimpleThread
class EmergeThread : public JThread
{
public:
Server *m_server;
@ -61,26 +61,17 @@ public:
std::queue<v3s16> blockqueue;
EmergeThread(Server *server, int ethreadid):
SimpleThread(),
JThread(),
m_server(server),
map(NULL),
emerge(NULL),
mapgen(NULL),
enable_mapgen_debug_info(false),
id(ethreadid)
{
}
void *Thread();
void trigger()
{
setRun(true);
if(IsRunning() == false)
{
Start();
}
}
bool popBlockEmerge(v3s16 *pos, u8 *flags);
bool getBlockOrStartGen(v3s16 p, MapBlock **b,
BlockMakeData *data, bool allow_generate);
@ -137,9 +128,9 @@ EmergeManager::EmergeManager(IGameDef *gamedef) {
EmergeManager::~EmergeManager() {
for (unsigned int i = 0; i != emergethread.size(); i++) {
emergethread[i]->setRun(false);
emergethread[i]->Stop();
emergethread[i]->qevent.signal();
emergethread[i]->stop();
emergethread[i]->Wait();
delete emergethread[i];
delete mapgen[i];
}
@ -261,9 +252,9 @@ Mapgen *EmergeManager::getCurrentMapgen() {
}
void EmergeManager::triggerAllThreads() {
void EmergeManager::startAllThreads() {
for (unsigned int i = 0; i != emergethread.size(); i++)
emergethread[i]->trigger();
emergethread[i]->Start();
}
@ -499,7 +490,7 @@ void *EmergeThread::Thread() {
mapgen = emerge->mapgen[id];
enable_mapgen_debug_info = emerge->mapgen_debug_info;
while (getRun())
while (!StopRequested())
try {
if (!popBlockEmerge(&p, &flags)) {
qevent.wait();