From ee864b6db4f26e0cd23711d01082689ddfa022f6 Mon Sep 17 00:00:00 2001 From: Stefan Neis Date: Sat, 10 Mar 2007 14:27:38 +0000 Subject: [PATCH] Applied patch #1677782 (Lock with Timeout for wxMutex, originally patch #1671637) git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@44709 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/os2/thread.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/os2/thread.cpp b/src/os2/thread.cpp index bcdd9e1934..f4234f2d85 100644 --- a/src/os2/thread.cpp +++ b/src/os2/thread.cpp @@ -96,7 +96,8 @@ public: bool IsOk() const { return m_vMutex != NULL; } wxMutexError Lock() { return LockTimeout(SEM_INDEFINITE_WAIT); } - wxMutexError TryLock() { return LockTimeout(SEM_IMMEDIATE_RETURN); } + wxMutexError Lock(unsigned long ms) { return LockTimeout(ms); } + wxMutexError TryLock(); wxMutexError Unlock(); private: @@ -127,6 +128,14 @@ wxMutexInternal::~wxMutexInternal() } } +wxMutexError wxMutexInternal::TryLock() +{ + const wxMutexError rc = LockTimeout( SEM_IMMEDIATE_RETURN ); + + // we have a special return code for timeout in this case + return rc == wxMUTEX_TIMEOUT ? wxMUTEX_BUSY : rc; +} + wxMutexError wxMutexInternal::LockTimeout(ULONG ulMilliseconds) { APIRET ulrc; @@ -136,6 +145,7 @@ wxMutexError wxMutexInternal::LockTimeout(ULONG ulMilliseconds) switch (ulrc) { case ERROR_TIMEOUT: + return wxMUTEX_TIMEOUT; case ERROR_TOO_MANY_SEM_REQUESTS: return wxMUTEX_BUSY; -- 2.47.2