repositories
/
deb_libcec.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
cec: make sure we're not trying to unlock the mutex too many times
[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..2c2b5c569819a669353712c1968cfa14bab9cbae 100644
(file)
--- a/
src/lib/platform/threads/mutex.h
+++ b/
src/lib/platform/threads/mutex.h
@@
-81,8
+81,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
+108,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