repositories
/
deb_libcec.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
cosmetics
[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 0efebdc2c0b47e14df475846e4f65ff92aa15dd1..0cc07eee883f6646e98bd65b6cfb601f5d8c1c96 100644
(file)
--- a/
src/lib/platform/threads/threads.h
+++ b/
src/lib/platform/threads/threads.h
@@
-45,7
+45,10
@@
namespace PLATFORM
virtual ~CThread(void)
{
virtual ~CThread(void)
{
- StopThread();
+ StopThread(0);
+ void *retVal;
+ ThreadsWait(m_thread, &retVal);
+ (void *)retVal; //"unreferenced local variable" warning
}
static void *ThreadHandler(CThread *thread)
}
static void *ThreadHandler(CThread *thread)
@@
-88,22
+91,26
@@
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;
}
- virtual bool StopThread(bool bWaitForExit = true)
+ /*!
+ * @brief Stop the thread
+ * @param iWaitMs negative = don't wait, 0 = infinite, or the amount of ms to wait
+ */
+ virtual bool StopThread(int iWaitMs = 5000)
{
bool bReturn(true);
bool bRunning(false);
{
bool bReturn(true);
bool bRunning(false);
@@
-113,12
+120,17
@@
namespace PLATFORM
m_bStop = true;
}
m_bStop = true;
}
- if (bRunning &&
bWaitForExit
)
+ if (bRunning &&
iWaitMs >= 0
)
{
{
-
void *retVal = NULL
;
- bReturn =
ThreadsWait(m_thread, &retVal
);
+
CLockObject lock(m_threadMutex)
;
+ bReturn =
m_threadCondition.Wait(m_threadMutex, m_bStopped, iWaitMs
);
}
}
- return true;
+ else
+ {
+ bReturn = true;
+ }
+
+ return bReturn;
}
virtual bool Sleep(uint32_t iTimeout)
}
virtual bool Sleep(uint32_t iTimeout)