git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@44705
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
wxMutexInternal( wxMutexType mutexType );
virtual ~wxMutexInternal();
wxMutexInternal( wxMutexType mutexType );
virtual ~wxMutexInternal();
- bool IsOk() const
- { return m_isOk; }
+ bool IsOk() const { return m_isOk; }
+ wxMutexError Lock() { return Lock(kDurationForever); }
+ wxMutexError Lock(unsigned long ms);
wxMutexError TryLock();
wxMutexError Unlock();
wxMutexError TryLock();
wxMutexError Unlock();
-wxMutexError wxMutexInternal::Lock()
+wxMutexError wxMutexInternal::Lock(unsigned long ms)
{
wxCHECK_MSG( m_isOk , wxMUTEX_MISC_ERROR , wxT("Invalid Mutex") );
{
wxCHECK_MSG( m_isOk , wxMUTEX_MISC_ERROR , wxT("Invalid Mutex") );
- OSStatus err = MPEnterCriticalRegion( m_critRegion, kDurationForever);
- if (err != noErr)
+ OSStatus err = MPEnterCriticalRegion( m_critRegion, ms );
+ switch ( err )
- wxLogSysError(wxT("Could not lock mutex"));
- return wxMUTEX_MISC_ERROR;
+ case noErr:
+ break;
+
+ case kMPTimeoutErr:
+ wxASSERT_MSG( ms != kDurationForever, wxT("unexpected timeout") );
+ return wxMUTEX_TIMEOUT;
+
+ default:
+ wxLogSysError(wxT("Could not lock mutex"));
+ return wxMUTEX_MISC_ERROR;
}
return wxMUTEX_NO_ERROR;
}
return wxMUTEX_NO_ERROR;