diff --git a/include/dbus-c++/eventloop.h b/include/dbus-c++/eventloop.h index fa6728b..8ba6064 100644 --- a/include/dbus-c++/eventloop.h +++ b/include/dbus-c++/eventloop.h @@ -126,7 +126,7 @@ class DXXAPI DefaultMutex { public: - DefaultMutex(); + DefaultMutex(bool recursive = false); ~DefaultMutex(); diff --git a/src/eventloop.cpp b/src/eventloop.cpp index d64197d..34ae2d1 100644 --- a/src/eventloop.cpp +++ b/src/eventloop.cpp @@ -75,9 +75,17 @@ DefaultWatch::~DefaultWatch() _disp->_mutex_w.unlock(); } -DefaultMutex::DefaultMutex() +DefaultMutex::DefaultMutex(bool recursive) { - pthread_mutex_init(&_mutex, NULL); + if (recursive) + { + pthread_mutex_t recmutex = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP; + _mutex = recmutex; + } + else + { + pthread_mutex_init(&_mutex, NULL); + } } DefaultMutex::~DefaultMutex()