mirror of
https://github.com/luanti-org/luanti.git
synced 2025-10-13 16:45:20 +02:00
Fix broken thread stop handling
This commit is contained in:
@@ -47,6 +47,7 @@ public:
|
||||
int Kill();
|
||||
virtual void *Thread() = 0;
|
||||
bool IsRunning();
|
||||
bool StopRequested();
|
||||
void *GetReturnValue();
|
||||
bool IsSameThread();
|
||||
protected:
|
||||
@@ -69,6 +70,7 @@ private:
|
||||
#endif // WIN32
|
||||
void *retval;
|
||||
bool running;
|
||||
bool requeststop;
|
||||
|
||||
JMutex runningmutex;
|
||||
JMutex continuemutex,continuemutex2;
|
||||
|
@@ -34,6 +34,7 @@ JThread::JThread()
|
||||
{
|
||||
retval = NULL;
|
||||
mutexinit = false;
|
||||
requeststop = false;
|
||||
running = false;
|
||||
}
|
||||
|
||||
@@ -44,7 +45,7 @@ JThread::~JThread()
|
||||
|
||||
void JThread::Stop() {
|
||||
runningmutex.Lock();
|
||||
running = false;
|
||||
requeststop = true;
|
||||
runningmutex.Unlock();
|
||||
}
|
||||
|
||||
@@ -78,6 +79,7 @@ int JThread::Start()
|
||||
runningmutex.Unlock();
|
||||
return ERR_JTHREAD_ALREADYRUNNING;
|
||||
}
|
||||
requeststop = false;
|
||||
runningmutex.Unlock();
|
||||
|
||||
pthread_attr_t attr;
|
||||
@@ -141,6 +143,15 @@ bool JThread::IsRunning()
|
||||
return r;
|
||||
}
|
||||
|
||||
bool JThread::StopRequested() {
|
||||
bool r;
|
||||
|
||||
runningmutex.Lock();
|
||||
r = requeststop;
|
||||
runningmutex.Unlock();
|
||||
return r;
|
||||
}
|
||||
|
||||
void *JThread::GetReturnValue()
|
||||
{
|
||||
void *val;
|
||||
|
@@ -35,6 +35,7 @@ JThread::JThread()
|
||||
{
|
||||
retval = NULL;
|
||||
mutexinit = false;
|
||||
requeststop = false;
|
||||
running = false;
|
||||
}
|
||||
|
||||
@@ -45,7 +46,7 @@ JThread::~JThread()
|
||||
|
||||
void JThread::Stop() {
|
||||
runningmutex.Lock();
|
||||
running = false;
|
||||
requeststop = false;
|
||||
runningmutex.Unlock();
|
||||
}
|
||||
|
||||
@@ -76,6 +77,7 @@ int JThread::Start()
|
||||
runningmutex.Unlock();
|
||||
return ERR_JTHREAD_ALREADYRUNNING;
|
||||
}
|
||||
requeststop = false;e
|
||||
runningmutex.Unlock();
|
||||
|
||||
continuemutex.Lock();
|
||||
@@ -134,6 +136,15 @@ bool JThread::IsRunning()
|
||||
return r;
|
||||
}
|
||||
|
||||
bool JThread::StopRequested() {
|
||||
bool r;
|
||||
|
||||
runningmutex.Lock();
|
||||
r = requeststop;
|
||||
runningmutex.Unlock();
|
||||
return r;
|
||||
}
|
||||
|
||||
void *JThread::GetReturnValue()
|
||||
{
|
||||
void *val;
|
||||
|
Reference in New Issue
Block a user