adding MPYield after releasing constructs like critical regions etc.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@27314 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -130,8 +130,8 @@ MPCriticalRegionID gs_guiCritical = kInvalidID;
|
|||||||
|
|
||||||
#if TARGET_API_MAC_OSX
|
#if TARGET_API_MAC_OSX
|
||||||
#define wxUSE_MAC_SEMAPHORE_MUTEX 0
|
#define wxUSE_MAC_SEMAPHORE_MUTEX 0
|
||||||
#define wxUSE_MAC_CRITICAL_REGION_MUTEX 0
|
#define wxUSE_MAC_CRITICAL_REGION_MUTEX 1
|
||||||
#define wxUSE_MAC_PTHREADS_MUTEX 1
|
#define wxUSE_MAC_PTHREADS_MUTEX 0
|
||||||
#else
|
#else
|
||||||
#define wxUSE_MAC_SEMAPHORE_MUTEX 0
|
#define wxUSE_MAC_SEMAPHORE_MUTEX 0
|
||||||
#define wxUSE_MAC_CRITICAL_REGION_MUTEX 1
|
#define wxUSE_MAC_CRITICAL_REGION_MUTEX 1
|
||||||
@@ -347,6 +347,7 @@ wxMutexInternal::~wxMutexInternal()
|
|||||||
{
|
{
|
||||||
if ( m_semaphore != kInvalidID )
|
if ( m_semaphore != kInvalidID )
|
||||||
MPDeleteSemaphore( m_semaphore);
|
MPDeleteSemaphore( m_semaphore);
|
||||||
|
MPYield() ;
|
||||||
}
|
}
|
||||||
|
|
||||||
wxMutexError wxMutexInternal::Lock()
|
wxMutexError wxMutexInternal::Lock()
|
||||||
@@ -383,12 +384,12 @@ wxMutexError wxMutexInternal::Unlock()
|
|||||||
{
|
{
|
||||||
wxCHECK_MSG( m_isOk , wxMUTEX_MISC_ERROR , wxT("Invalid Mutex") ) ;
|
wxCHECK_MSG( m_isOk , wxMUTEX_MISC_ERROR , wxT("Invalid Mutex") ) ;
|
||||||
OSStatus err = MPSignalSemaphore( m_semaphore);
|
OSStatus err = MPSignalSemaphore( m_semaphore);
|
||||||
|
MPYield() ;
|
||||||
if ( err)
|
if ( err)
|
||||||
{
|
{
|
||||||
wxLogSysError(_("Could not unlock mutex"));
|
wxLogSysError(_("Could not unlock mutex"));
|
||||||
return wxMUTEX_MISC_ERROR;
|
return wxMUTEX_MISC_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
return wxMUTEX_NO_ERROR;
|
return wxMUTEX_NO_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -427,6 +428,7 @@ wxMutexInternal::~wxMutexInternal()
|
|||||||
{
|
{
|
||||||
if ( m_critRegion != kInvalidID )
|
if ( m_critRegion != kInvalidID )
|
||||||
MPDeleteCriticalRegion( m_critRegion);
|
MPDeleteCriticalRegion( m_critRegion);
|
||||||
|
MPYield() ;
|
||||||
}
|
}
|
||||||
|
|
||||||
wxMutexError wxMutexInternal::Lock()
|
wxMutexError wxMutexInternal::Lock()
|
||||||
@@ -463,6 +465,7 @@ wxMutexError wxMutexInternal::Unlock()
|
|||||||
{
|
{
|
||||||
wxCHECK_MSG( m_isOk , wxMUTEX_MISC_ERROR , wxT("Invalid Mutex") ) ;
|
wxCHECK_MSG( m_isOk , wxMUTEX_MISC_ERROR , wxT("Invalid Mutex") ) ;
|
||||||
OSStatus err = MPExitCriticalRegion( m_critRegion);
|
OSStatus err = MPExitCriticalRegion( m_critRegion);
|
||||||
|
MPYield() ;
|
||||||
if ( err)
|
if ( err)
|
||||||
{
|
{
|
||||||
wxLogSysError(_("Could not unlock mutex"));
|
wxLogSysError(_("Could not unlock mutex"));
|
||||||
@@ -524,6 +527,7 @@ wxSemaphoreInternal::~wxSemaphoreInternal()
|
|||||||
{
|
{
|
||||||
if( m_semaphore != kInvalidID )
|
if( m_semaphore != kInvalidID )
|
||||||
MPDeleteSemaphore( m_semaphore);
|
MPDeleteSemaphore( m_semaphore);
|
||||||
|
MPYield() ;
|
||||||
}
|
}
|
||||||
|
|
||||||
wxSemaError wxSemaphoreInternal::WaitTimeout(unsigned long milliseconds)
|
wxSemaError wxSemaphoreInternal::WaitTimeout(unsigned long milliseconds)
|
||||||
@@ -543,6 +547,7 @@ wxSemaError wxSemaphoreInternal::WaitTimeout(unsigned long milliseconds)
|
|||||||
wxSemaError wxSemaphoreInternal::Post()
|
wxSemaError wxSemaphoreInternal::Post()
|
||||||
{
|
{
|
||||||
OSStatus err = MPSignalSemaphore( m_semaphore);
|
OSStatus err = MPSignalSemaphore( m_semaphore);
|
||||||
|
MPYield() ;
|
||||||
if ( err)
|
if ( err)
|
||||||
{
|
{
|
||||||
return wxSEMA_MISC_ERROR;
|
return wxSEMA_MISC_ERROR;
|
||||||
|
Reference in New Issue
Block a user