]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/thread.h
Motif updates
[wxWidgets.git] / include / wx / thread.h
index 08e462a442c6fa362d6acebaee2fec67cf8e6c10..99091a44abdaa58a749be6fa6beb8bfceb1c8f22 100644 (file)
 typedef enum {
   MUTEX_NO_ERROR=0,
   MUTEX_DEAD_LOCK,             // Mutex has been already locked by THE CALLING thread 
-  MUTEX_BUSY                   // Mutex has been already locked by ONE thread
+  MUTEX_BUSY,                  // Mutex has been already locked by ONE thread
+  MUTEX_UNLOCKED
 } wxMutexError;
 
 typedef enum {
   THREAD_NO_ERROR=0,           // No error
   THREAD_NO_RESOURCE,          // No resource left to create a new thread
   THREAD_RUNNING,              // The thread is already running
-  THREAD_NOT_RUNNING           // The thread isn't running
+  THREAD_NOT_RUNNING,          // The thread isn't running
+  THREAD_MISC_ERROR             // Some other error
 } wxThreadError;
 
 // defines the interval of priority.
@@ -39,7 +41,7 @@ typedef enum {
 
 // ---------------------------------------------------------------------------
 // Mutex handler
-class wxMutexInternal;
+class WXDLLEXPORT wxMutexInternal;
 class WXDLLEXPORT wxMutex {
 public:
   // constructor & destructor 
@@ -99,6 +101,12 @@ public:
   // Destroys the thread immediately if the defer flag isn't true.
   wxThreadError Destroy();
 
+  // Pause a running thread
+  wxThreadError Pause();
+
+  // Resume a paused thread
+  wxThreadError Resume();
+
   // Switches on the defer flag.
   void DeferDestroy(bool on);
 
@@ -116,11 +124,16 @@ public:
 
   // Returns true if the thread is alive.
   bool IsAlive() const;
+  // Returns true if the thread is running (not paused, not killed).
+  bool IsRunning() const;
   // Returns true if the thread is the main thread (aka the GUI thread).
   static bool IsMain();
 
   // Called when thread exits.
   virtual void OnExit();
+
+  // Returns the wxThread object which corresponds to the ID.
+  static wxThread *GetThreadFromID(unsigned long id);
 protected:
   // In case, the DIFFER flag is true, enables another thread to kill this one.
   void TestDestroy();
@@ -139,7 +152,8 @@ private:
 // ---------------------------------------------------------------------------
 // Global variables
 
-// GUI mutex.
-WXDLLEXPORT_DATA(extern wxMutex) wxMainMutex;
+// GUI mutex handling.
+void WXDLLEXPORT wxMutexGuiEnter();
+void WXDLLEXPORT wxMutexGuiLeave();
 
 #endif