catching errors
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@28717 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -77,12 +77,18 @@ public :
|
|||||||
wxMacStCritical()
|
wxMacStCritical()
|
||||||
{
|
{
|
||||||
if ( UMASystemIsInitialized() )
|
if ( UMASystemIsInitialized() )
|
||||||
ThreadBeginCritical() ;
|
{
|
||||||
|
OSErr err = ThreadBeginCritical() ;
|
||||||
|
wxASSERT( err == noErr ) ;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
~wxMacStCritical()
|
~wxMacStCritical()
|
||||||
{
|
{
|
||||||
if ( UMASystemIsInitialized() )
|
if ( UMASystemIsInitialized() )
|
||||||
ThreadEndCritical() ;
|
{
|
||||||
|
OSErr err = ThreadEndCritical() ;
|
||||||
|
wxASSERT( err == noErr ) ;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -133,6 +139,7 @@ wxMutexError wxMutexInternal::Lock()
|
|||||||
m_waiters.Add(current);
|
m_waiters.Add(current);
|
||||||
err = ::SetThreadStateEndCritical(kCurrentThreadID, kStoppedThreadState, m_owner);
|
err = ::SetThreadStateEndCritical(kCurrentThreadID, kStoppedThreadState, m_owner);
|
||||||
err = ::ThreadBeginCritical();
|
err = ::ThreadBeginCritical();
|
||||||
|
wxASSERT( err == noErr ) ;
|
||||||
}
|
}
|
||||||
m_owner = current;
|
m_owner = current;
|
||||||
}
|
}
|
||||||
@@ -165,6 +172,7 @@ wxMutexError wxMutexInternal::Unlock()
|
|||||||
{
|
{
|
||||||
OSErr err;
|
OSErr err;
|
||||||
err = ::ThreadBeginCritical();
|
err = ::ThreadBeginCritical();
|
||||||
|
wxASSERT( err == noErr ) ;
|
||||||
|
|
||||||
if (m_locked > 0)
|
if (m_locked > 0)
|
||||||
m_locked--;
|
m_locked--;
|
||||||
@@ -446,11 +454,13 @@ bool wxThreadInternal::Suspend()
|
|||||||
{
|
{
|
||||||
OSErr err ;
|
OSErr err ;
|
||||||
|
|
||||||
::ThreadBeginCritical();
|
err = ::ThreadBeginCritical();
|
||||||
|
wxASSERT( err == noErr ) ;
|
||||||
|
|
||||||
if ( m_state != STATE_RUNNING )
|
if ( m_state != STATE_RUNNING )
|
||||||
{
|
{
|
||||||
::ThreadEndCritical() ;
|
err = ::ThreadEndCritical() ;
|
||||||
|
wxASSERT( err == noErr ) ;
|
||||||
wxLogSysError(_("Can not suspend thread %x"), m_tid);
|
wxLogSysError(_("Can not suspend thread %x"), m_tid);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
@@ -471,19 +481,22 @@ bool wxThreadInternal::Resume()
|
|||||||
wxASSERT( err == noErr ) ;
|
wxASSERT( err == noErr ) ;
|
||||||
wxASSERT( current != m_tid ) ;
|
wxASSERT( current != m_tid ) ;
|
||||||
|
|
||||||
::ThreadBeginCritical();
|
err = ::ThreadBeginCritical();
|
||||||
|
wxASSERT( err == noErr ) ;
|
||||||
|
|
||||||
if ( m_state != STATE_PAUSED && m_state != STATE_NEW )
|
if ( m_state != STATE_PAUSED && m_state != STATE_NEW )
|
||||||
{
|
{
|
||||||
::ThreadEndCritical() ;
|
err = ::ThreadEndCritical() ;
|
||||||
|
wxASSERT( err == noErr ) ;
|
||||||
wxLogSysError(_("Can not resume thread %x"), m_tid);
|
wxLogSysError(_("Can not resume thread %x"), m_tid);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
}
|
}
|
||||||
err = ::SetThreadStateEndCritical(m_tid, kReadyThreadState, kNoThreadID);
|
err = ::SetThreadStateEndCritical(m_tid, kReadyThreadState, kNoThreadID);
|
||||||
wxASSERT( err == noErr ) ;
|
|
||||||
|
|
||||||
m_state = STATE_RUNNING;
|
m_state = STATE_RUNNING;
|
||||||
::ThreadEndCritical() ;
|
err = ::ThreadEndCritical() ;
|
||||||
|
wxASSERT( err == noErr ) ;
|
||||||
::YieldToAnyThread() ;
|
::YieldToAnyThread() ;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user