repositories
/
deb_libcec.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
cec: clean ups and only include what we need from lib/platform.
[deb_libcec.git]
/
src
/
lib
/
platform
/
threads
/
mutex.h
diff --git
a/src/lib/platform/threads/mutex.h
b/src/lib/platform/threads/mutex.h
index 4a2ad795f86e153cc59cb3c607e443198eecc735..38055f9bf8cbbb19a9632972e83029a186d9716b 100644
(file)
--- a/
src/lib/platform/threads/mutex.h
+++ b/
src/lib/platform/threads/mutex.h
@@
-31,6
+31,14
@@
* http://www.pulse-eight.net/
*/
* http://www.pulse-eight.net/
*/
+#include "../os.h"
+
+#if defined(__WINDOWS__)
+#include "../windows/os-threads.h"
+#else
+#include "../posix/os-threads.h"
+#endif
+
namespace PLATFORM
{
class PreventCopy
namespace PLATFORM
{
class PreventCopy
@@
-81,8
+89,17
@@
namespace PLATFORM
inline void Unlock(void)
{
inline void Unlock(void)
{
- --m_iLockCount;
- MutexUnlock(m_mutex);
+ if (Lock())
+ {
+ if (m_iLockCount >= 2)
+ {
+ --m_iLockCount;
+ MutexUnlock(m_mutex);
+ }
+
+ --m_iLockCount;
+ MutexUnlock(m_mutex);
+ }
}
inline bool Clear(void)
}
inline bool Clear(void)
@@
-99,8
+116,8
@@
namespace PLATFORM
}
private:
}
private:
- mutex_t m_mutex;
- unsigned int m_iLockCount;
+ mutex_t
m_mutex;
+
volatile
unsigned int m_iLockCount;
};
class CLockObject : public PreventCopy
};
class CLockObject : public PreventCopy