summaryrefslogtreecommitdiff
path: root/src/jthread/win32/jthread.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/jthread/win32/jthread.cpp')
-rwxr-xr-xsrc/jthread/win32/jthread.cpp52
1 files changed, 2 insertions, 50 deletions
diff --git a/src/jthread/win32/jthread.cpp b/src/jthread/win32/jthread.cpp
index 6a745c590..a1cf91a2c 100755
--- a/src/jthread/win32/jthread.cpp
+++ b/src/jthread/win32/jthread.cpp
@@ -44,35 +44,20 @@ JThread::~JThread()
Kill();
}
-void JThread::Stop() {
- runningmutex.Lock();
- requeststop = true;
- runningmutex.Unlock();
-}
-
void JThread::Wait() {
- runningmutex.Lock();
if (running)
{
- runningmutex.Unlock();
WaitForSingleObject(threadhandle, INFINITE);
}
- else
- {
- runningmutex.Unlock();
- }
}
int JThread::Start()
{
- runningmutex.Lock();
if (running)
{
- runningmutex.Unlock();
return ERR_JTHREAD_ALREADYRUNNING;
}
requeststop = false;
- runningmutex.Unlock();
continuemutex.Lock();
#ifndef _WIN32_WCE
@@ -87,15 +72,10 @@ int JThread::Start()
}
/* Wait until 'running' is set */
-
- runningmutex.Lock();
while (!running)
{
- runningmutex.Unlock();
Sleep(1);
- runningmutex.Lock();
}
- runningmutex.Unlock();
continuemutex.Unlock();
@@ -107,48 +87,24 @@ int JThread::Start()
int JThread::Kill()
{
- runningmutex.Lock();
if (!running)
{
- runningmutex.Unlock();
return ERR_JTHREAD_NOTRUNNING;
}
TerminateThread(threadhandle,0);
CloseHandle(threadhandle);
running = false;
- runningmutex.Unlock();
return 0;
}
-bool JThread::IsRunning()
-{
- bool r;
-
- runningmutex.Lock();
- r = running;
- runningmutex.Unlock();
- return r;
-}
-
-bool JThread::StopRequested() {
- bool r;
-
- runningmutex.Lock();
- r = requeststop;
- runningmutex.Unlock();
- return r;
-}
-
void *JThread::GetReturnValue()
{
void *val;
- runningmutex.Lock();
- if (running)
+ if (running) {
val = NULL;
- else
+ } else {
val = retval;
- runningmutex.Unlock();
return val;
}
@@ -169,20 +125,16 @@ DWORD WINAPI JThread::TheThread(void *param)
jthread = (JThread *)param;
jthread->continuemutex2.Lock();
- jthread->runningmutex.Lock();
jthread->running = true;
- jthread->runningmutex.Unlock();
jthread->continuemutex.Lock();
jthread->continuemutex.Unlock();
ret = jthread->Thread();
- jthread->runningmutex.Lock();
jthread->running = false;
jthread->retval = ret;
CloseHandle(jthread->threadhandle);
- jthread->runningmutex.Unlock();
return 0;
}