aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--xbmc/platform/posix/threads/RecursiveMutex.cpp23
1 files changed, 5 insertions, 18 deletions
diff --git a/xbmc/platform/posix/threads/RecursiveMutex.cpp b/xbmc/platform/posix/threads/RecursiveMutex.cpp
index 652bc3722e..19a940e518 100644
--- a/xbmc/platform/posix/threads/RecursiveMutex.cpp
+++ b/xbmc/platform/posix/threads/RecursiveMutex.cpp
@@ -11,31 +11,18 @@
namespace XbmcThreads
{
-static pthread_mutexattr_t recursiveAttr;
-
-static bool SetRecursiveAttr()
+pthread_mutexattr_t& CRecursiveMutex::getRecursiveAttr()
{
- static bool alreadyCalled = false;
-
- if (!alreadyCalled)
+ static pthread_mutexattr_t recursiveAttr = []()
{
+ pthread_mutexattr_t recursiveAttr;
pthread_mutexattr_init(&recursiveAttr);
pthread_mutexattr_settype(&recursiveAttr, PTHREAD_MUTEX_RECURSIVE);
#if !defined(TARGET_ANDROID)
pthread_mutexattr_setprotocol(&recursiveAttr, PTHREAD_PRIO_INHERIT);
#endif
- alreadyCalled = true;
- }
-
- return true; // note, we never call destroy.
-}
-
-static bool recursiveAttrSet = SetRecursiveAttr();
-
-pthread_mutexattr_t& CRecursiveMutex::getRecursiveAttr()
-{
- if (!recursiveAttrSet) // this is only possible in the single threaded startup code
- recursiveAttrSet = SetRecursiveAttr();
+ return recursiveAttr;
+ }();
return recursiveAttr;
}