]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mac/classic/thread.cpp
create stock GDI objects on demand; use const with GDI objects appropriately (patch...
[wxWidgets.git] / src / mac / classic / thread.cpp
index 77d12e6e8dcfeae38eb473dfd056283c46a0e293..ee31c8e7df788fda13221a798acd9a65e438ad27 100644 (file)
@@ -7,13 +7,9 @@
 // RCS-ID:      $Id$
 // Copyright:   (c) Wolfram Gloger (1996, 1997); Guilhem Lavaux (1998),
 //                  Vadim Zeitlin (1999) , Stefan Csomor (2000)
-// Licence:     wxWidgets licence
+// Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-#ifdef __GNUG__
-    #pragma implementation "thread.h"
-#endif
-
 // ----------------------------------------------------------------------------
 // headers
 // ----------------------------------------------------------------------------
@@ -77,12 +73,18 @@ public :
     wxMacStCritical()
     {
         if ( UMASystemIsInitialized() )
-            ThreadBeginCritical() ;
+        {
+            OSErr err = ThreadBeginCritical() ;
+            wxASSERT( err == noErr ) ;
+        }
     }
     ~wxMacStCritical()
     {
         if ( UMASystemIsInitialized() )
-            ThreadEndCritical() ;
+        {
+            OSErr err = ThreadEndCritical() ;
+            wxASSERT( err == noErr ) ;
+    }
     }
 };
 
@@ -133,6 +135,7 @@ wxMutexError wxMutexInternal::Lock()
             m_waiters.Add(current);
             err = ::SetThreadStateEndCritical(kCurrentThreadID, kStoppedThreadState, m_owner);
             err = ::ThreadBeginCritical();
+            wxASSERT( err == noErr ) ;
         }
         m_owner = current;
     }
@@ -165,6 +168,7 @@ wxMutexError wxMutexInternal::Unlock()
     {
         OSErr err;
         err = ::ThreadBeginCritical();
+        wxASSERT( err == noErr ) ;
 
         if (m_locked > 0)
             m_locked--;
@@ -446,11 +450,13 @@ bool wxThreadInternal::Suspend()
 {
     OSErr err ;
 
-    ::ThreadBeginCritical();
+    err = ::ThreadBeginCritical();
+    wxASSERT( err == noErr ) ;
 
     if ( m_state != STATE_RUNNING )
     {
-        ::ThreadEndCritical() ;
+        err = ::ThreadEndCritical() ;
+        wxASSERT( err == noErr ) ;
         wxLogSysError(_("Can not suspend thread %x"), m_tid);
         return FALSE;
     }
@@ -471,19 +477,22 @@ bool wxThreadInternal::Resume()
     wxASSERT( err == noErr ) ;
     wxASSERT( current != m_tid ) ;
 
-    ::ThreadBeginCritical();
+    err = ::ThreadBeginCritical();
+    wxASSERT( err == noErr ) ;
+
     if ( m_state != STATE_PAUSED && m_state != STATE_NEW )
     {
-        ::ThreadEndCritical() ;
+        err = ::ThreadEndCritical() ;
+        wxASSERT( err == noErr ) ;
         wxLogSysError(_("Can not resume thread %x"), m_tid);
         return FALSE;
 
     }
     err = ::SetThreadStateEndCritical(m_tid, kReadyThreadState, kNoThreadID);
-    wxASSERT( err == noErr ) ;
 
     m_state = STATE_RUNNING;
-    ::ThreadEndCritical() ;
+    err = ::ThreadEndCritical() ;
+    wxASSERT( err == noErr ) ;
     ::YieldToAnyThread() ;
     return TRUE;
 }