repositories
/
deb_libcec.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
separate mutex for CUSBCECAdapterCommunication::MarkAsWaiting()
[deb_libcec.git]
/
src
/
lib
/
platform
/
threads
/
threads.h
diff --git
a/src/lib/platform/threads/threads.h
b/src/lib/platform/threads/threads.h
index b5ccf3850815845b1d37e458ab163fcd78e62f93..dc304f056e9b7472fbaac95874dd17ea4ee9f042 100644
(file)
--- a/
src/lib/platform/threads/threads.h
+++ b/
src/lib/platform/threads/threads.h
@@
-2,7
+2,7
@@
/*
* This file is part of the libCEC(R) library.
*
/*
* This file is part of the libCEC(R) library.
*
- * libCEC(R) is Copyright (C) 2011-201
2
Pulse-Eight Limited. All rights reserved.
+ * libCEC(R) is Copyright (C) 2011-201
3
Pulse-Eight Limited. All rights reserved.
* libCEC(R) is an original work, containing original code.
*
* libCEC(R) is a trademark of Pulse-Eight Limited.
* libCEC(R) is an original work, containing original code.
*
* libCEC(R) is a trademark of Pulse-Eight Limited.
@@
-41,14
+41,15
@@
namespace PLATFORM
CThread(void) :
m_bStop(false),
m_bRunning(false),
CThread(void) :
m_bStop(false),
m_bRunning(false),
- m_bStopped(false) {}
+ m_bStopped(false),
+ m_thread(INVALID_THREAD_VALUE) {}
virtual ~CThread(void)
{
StopThread(0);
virtual ~CThread(void)
{
StopThread(0);
- void *retVal;
- ThreadsWait(m_thread, &retVal);
-
(void *)retVal; //"unreferenced local variable"
warning
+ void *retVal
= NULL
;
+ if (m_thread != INVALID_THREAD_VALUE)
+
if (ThreadsWait(m_thread, &retVal)){}; // silence unused
warning
}
static void *ThreadHandler(CThread *thread)
}
static void *ThreadHandler(CThread *thread)
@@
-91,18
+92,18
@@
namespace PLATFORM
virtual bool CreateThread(bool bWait = true)
{
virtual bool CreateThread(bool bWait = true)
{
- bool bReturn(false);
- CLockObject lock(m_threadMutex);
- if (!IsRunning())
+ bool bReturn(false);
+ CLockObject lock(m_threadMutex);
+ if (!IsRunning())
+ {
+ m_bStop = false;
+ if (ThreadsCreate(m_thread, CThread::ThreadHandler, ((void*)static_cast<CThread *>(this))))
{
{
- m_bStop = false;
- if (ThreadsCreate(m_thread, CThread::ThreadHandler, ((void*)static_cast<CThread *>(this))))
- {
- if (bWait)
- m_threadCondition.Wait(m_threadMutex, m_bRunning);
- bReturn = true;
- }
+ if (bWait)
+ m_threadCondition.Wait(m_threadMutex, m_bRunning);
+ bReturn = true;
}
}
+ }
return bReturn;
}
return bReturn;
}
@@
-143,13
+144,13
@@
namespace PLATFORM
protected:
void SetRunning(bool bSetTo);
protected:
void SetRunning(bool bSetTo);
+ CMutex m_threadMutex;
private:
bool m_bStop;
bool m_bRunning;
bool m_bStopped;
CCondition<bool> m_threadCondition;
private:
bool m_bStop;
bool m_bRunning;
bool m_bStopped;
CCondition<bool> m_threadCondition;
- CMutex m_threadMutex;
thread_t m_thread;
};
};
thread_t m_thread;
};
};