X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/d9d14984ff9f41ab86d01f0db28b50e4ae9774d6..7d8268a1d64de58aab194e4d8ae800c755990aad:/src/mac/carbon/mpthread.cpp diff --git a/src/mac/carbon/mpthread.cpp b/src/mac/carbon/mpthread.cpp index b0d67a020c..7eeabfa7a3 100755 --- a/src/mac/carbon/mpthread.cpp +++ b/src/mac/carbon/mpthread.cpp @@ -40,7 +40,7 @@ #else #include #include -#include +#include "wx/math.h" #endif #include "wx/mac/uma.h" #endif @@ -126,6 +126,20 @@ MPCriticalRegionID gs_guiCritical = kInvalidID; // wxMutex implementation // ---------------------------------------------------------------------------- +static bool wxMacMPThreadsInitVerify() +{ + static bool hasThreadManager = false ; + if ( !hasThreadManager ) + hasThreadManager = MPLibraryIsLoaded(); + + if ( !hasThreadManager ) + { + wxMessageBox( wxT("Error") , wxT("MP Thread Support is not available on this System" ), wxOK ) ; + return FALSE ; + } + return TRUE ; +} + #if 0 class wxMutexInternal @@ -145,6 +159,8 @@ private: wxMutexInternal::wxMutexInternal(wxMutexType mutexType ) { + wxMacMPThreadsInitVerify() ; + m_isOk = false ; m_semaphore = kInvalidID ; @@ -234,6 +250,7 @@ private: wxMutexInternal::wxMutexInternal(wxMutexType mutexType ) { + wxMacMPThreadsInitVerify() ; m_isOk = false ; m_critRegion = kInvalidID ; @@ -327,6 +344,7 @@ private: wxSemaphoreInternal::wxSemaphoreInternal(int initialcount, int maxcount) { + wxMacMPThreadsInitVerify() ; m_isOk = false ; m_semaphore = kInvalidID ; if ( maxcount == 0 ) @@ -778,7 +796,7 @@ private: MPQueueID m_notifyQueueId; // its notification queue wxThreadState m_state; // see wxThreadState enum - int m_prio; // in wxWindows units: from 0 to 100 + int m_prio; // in wxWidgets units: from 0 to 100 // this flag is set when the thread should terminate bool m_cancelled; @@ -860,6 +878,7 @@ OSStatus wxThreadInternal::MacThreadStart(void *parameter) bool wxThreadInternal::Create(wxThread *thread, unsigned int stackSize) { + wxMacMPThreadsInitVerify() ; wxASSERT_MSG( m_state == STATE_NEW && !m_tid, _T("Create()ing thread twice?") ); @@ -908,8 +927,8 @@ void wxThreadInternal::SetPriority( int priority) if ( m_tid) { // Mac priorities range from 1 to 10,000, with a default of 100. - // wxWindows priorities range from 0 to 100 with a default of 50. - // We can map wxWindows to Mac priorities easily by assuming + // wxWidgets priorities range from 0 to 100 with a default of 50. + // We can map wxWidgets to Mac priorities easily by assuming // the former uses a logarithmic scale. const unsigned int macPriority = ( int)( exp( priority / 25.0 * log( 10.0)) + 0.5); @@ -1414,13 +1433,9 @@ private: IMPLEMENT_DYNAMIC_CLASS(wxThreadModule, wxModule) bool wxThreadModule::OnInit() -{ - bool hasThreadManager = false ; - hasThreadManager = MPLibraryIsLoaded(); - - if ( !hasThreadManager ) +{ + if ( !wxMacMPThreadsInitVerify() ) { - wxMessageBox( wxT("Error") , wxT("MP Thread Support is not available on this System" ), wxOK ) ; return FALSE ; }