X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/261fb041249ca504a5cdf3d38f67de9367d5bd7b..d2b23b67301bd2d286366d4326a21da3132558fa:/src/msw/thread.cpp?ds=sidebyside diff --git a/src/msw/thread.cpp b/src/msw/thread.cpp index 74ab15f4c9..36fc19ef8e 100644 --- a/src/msw/thread.cpp +++ b/src/msw/thread.cpp @@ -26,7 +26,6 @@ #include "wx/thread.h" #ifndef WX_PRECOMP - #include "wx/msw/missing.h" #include "wx/intl.h" #include "wx/app.h" #include "wx/module.h" @@ -36,6 +35,7 @@ #include "wx/scopeguard.h" #include "wx/msw/private.h" +#include "wx/msw/missing.h" #include "wx/msw/seh.h" #include "wx/except.h" @@ -178,7 +178,8 @@ public: bool IsOk() const { return m_mutex != NULL; } wxMutexError Lock() { return LockTimeout(INFINITE); } - wxMutexError TryLock() { return LockTimeout(0); } + wxMutexError Lock(unsigned long ms) { return LockTimeout(ms); } + wxMutexError TryLock(); wxMutexError Unlock(); private: @@ -196,7 +197,7 @@ wxMutexInternal::wxMutexInternal(wxMutexType WXUNUSED(mutexType)) m_mutex = ::CreateMutex ( NULL, // default secutiry attributes - false, // not initially locked + FALSE, // not initially locked NULL // no name ); @@ -217,6 +218,14 @@ wxMutexInternal::~wxMutexInternal() } } +wxMutexError wxMutexInternal::TryLock() +{ + const wxMutexError rc = LockTimeout(0); + + // we have a special return code for timeout in this case + return rc == wxMUTEX_TIMEOUT ? wxMUTEX_BUSY : rc; +} + wxMutexError wxMutexInternal::LockTimeout(DWORD milliseconds) { DWORD rc = ::WaitForSingleObject(m_mutex, milliseconds); @@ -237,7 +246,7 @@ wxMutexError wxMutexInternal::LockTimeout(DWORD milliseconds) break; case WAIT_TIMEOUT: - return wxMUTEX_BUSY; + return wxMUTEX_TIMEOUT; case WAIT_ABANDONED: // checked for above default: