]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mac/carbon/mpthread.cpp
wxTextPos for all GetLastPosition with constants for special cases. Make it virtual...
[wxWidgets.git] / src / mac / carbon / mpthread.cpp
index b0d67a020c4bfd1c95d7720c605f7abadd7f7901..7eeabfa7a3dd9bed0a188082371efc701c863109 100755 (executable)
@@ -40,7 +40,7 @@
 #else
 #include <DriverServices.h>
 #include <Multiprocessing.h>
-#include <math.h>
+#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 ;
     }