]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/thread.h
operator >> wxString eat word by default. \n Add wxTextInputStream::Get/SetStringSepa...
[wxWidgets.git] / include / wx / thread.h
index 491bf986de9b41f7519f8ae13042301edc294fd3..c47aca344955d9bd717e52dad4c1e72afaa4e62b 100644 (file)
 #ifndef __THREADH__
 #define __THREADH__
 
 #ifndef __THREADH__
 #define __THREADH__
 
-#ifdef __GNUG__
-    #pragma interface "thread.h"
-#endif
-
 // ----------------------------------------------------------------------------
 // headers
 // ----------------------------------------------------------------------------
 // ----------------------------------------------------------------------------
 // headers
 // ----------------------------------------------------------------------------
 #include "wx/setup.h"
 
 #if wxUSE_THREADS
 #include "wx/setup.h"
 
 #if wxUSE_THREADS
+/* otherwise we get undefined references for non-thread case (KB)*/
+#ifdef __GNUG__
+    #pragma interface "thread.h"
+#endif
 
 // Windows headers define it
 #ifdef Yield
 
 // Windows headers define it
 #ifdef Yield
@@ -134,7 +134,7 @@ private:
 
 // in order to avoid any overhead under !MSW make all wxCriticalSection class
 // functions inline - but this can't be done under MSW
 
 // in order to avoid any overhead under !MSW make all wxCriticalSection class
 // functions inline - but this can't be done under MSW
-#ifdef __WXMSW__
+#if defined(__WXMSW__) || defined(__WXPM__)
     class WXDLLEXPORT wxCriticalSectionInternal;
     #define WXCRITICAL_INLINE
 #else // !MSW
     class WXDLLEXPORT wxCriticalSectionInternal;
     #define WXCRITICAL_INLINE
 #else // !MSW
@@ -160,7 +160,7 @@ private:
     wxCriticalSection(const wxCriticalSection&);
     wxCriticalSection& operator=(const wxCriticalSection&);
 
     wxCriticalSection(const wxCriticalSection&);
     wxCriticalSection& operator=(const wxCriticalSection&);
 
-#ifdef __WXMSW__
+#if defined(__WXMSW__) || defined(__WXPM__)
     wxCriticalSectionInternal *m_critsect;
 #else // !MSW
     wxMutex m_mutex;
     wxCriticalSectionInternal *m_critsect;
 #else // !MSW
     wxMutex m_mutex;
@@ -301,7 +301,7 @@ public:
         // Returns true if the thread is running (not paused, not killed).
     bool IsRunning() const;
         // Returns true if the thread is suspended
         // Returns true if the thread is running (not paused, not killed).
     bool IsRunning() const;
         // Returns true if the thread is suspended
-    bool IsPaused() const { return IsAlive() && !IsRunning(); }
+    bool IsPaused() const;
 
     // called when the thread exits - in the context of this thread
     //
 
     // called when the thread exits - in the context of this thread
     //
@@ -350,12 +350,26 @@ private:
 void WXDLLEXPORT wxMutexGuiEnter();
 void WXDLLEXPORT wxMutexGuiLeave();
 
 void WXDLLEXPORT wxMutexGuiEnter();
 void WXDLLEXPORT wxMutexGuiLeave();
 
+// macros for entering/leaving critical sections which may be used without
+// having to take them inside "#if wxUSE_THREADS"
+#define wxENTER_CRIT_SECT(cs)   (cs)->Enter()
+#define wxLEAVE_CRIT_SECT(cs)   (cs)->Leave()
+#define wxCRIT_SECT_LOCKER(name, cs)  wxCriticalSectionLocker name(*cs)
+
 #else // !wxUSE_THREADS
 
 #else // !wxUSE_THREADS
 
+#include "wx/defs.h" // for WXDLLEXPORT
+
 // no thread support
 inline void WXDLLEXPORT wxMutexGuiEnter() { }
 inline void WXDLLEXPORT wxMutexGuiLeave() { }
 
 // no thread support
 inline void WXDLLEXPORT wxMutexGuiEnter() { }
 inline void WXDLLEXPORT wxMutexGuiLeave() { }
 
+// macros for entering/leaving critical sections which may be used without
+// having to take them inside "#if wxUSE_THREADS"
+#define wxENTER_CRIT_SECT(cs)
+#define wxLEAVE_CRIT_SECT(cs)
+#define wxCRIT_SECT_LOCKER(name, cs)
+
 #endif // wxUSE_THREADS
 
 // automatically unlock GUI mutex in dtor
 #endif // wxUSE_THREADS
 
 // automatically unlock GUI mutex in dtor
@@ -370,7 +384,7 @@ public:
 // implementation only until the end of file
 // -----------------------------------------------------------------------------
 #if wxUSE_THREADS
 // implementation only until the end of file
 // -----------------------------------------------------------------------------
 #if wxUSE_THREADS
-#ifdef __WXMSW__
+#if defined(__WXMSW__) || defined(__WXPM__)
     // unlock GUI if there are threads waiting for and lock it back when
     // there are no more of them - should be called periodically by the main
     // thread
     // unlock GUI if there are threads waiting for and lock it back when
     // there are no more of them - should be called periodically by the main
     // thread