]> git.saurik.com Git - wxWidgets.git/blobdiff - src/qt/threadsgi.cpp
wxWindowDC compiles (wxGTK doesn't link yet because of dcpsg.cpp problems...)
[wxWidgets.git] / src / qt / threadsgi.cpp
index 6f602b3324e0e15e0ad1e528fdbc772eb93350a8..66b6b0da7b21b0a62ce8403fb5390eaa7c9c5947 100644 (file)
@@ -34,7 +34,7 @@ enum thread_state {
 /////////////////////////////////////////////////////////////////////////////
 
 static int p_mainid;
-wxMutex wxMainMutex;
+wxMutex *wxMainMutex;
 
 #include "threadgui.inc"
 
@@ -141,10 +141,22 @@ wxThreadError wxThread::Create()
   return THREAD_NO_ERROR;
 }
 
-void wxThread::Destroy()
+wxThreadError wxThread::Destroy()
 {
   if (p_internal->state == STATE_RUNNING)
     p_internal->state = STATE_CANCELED;
+
+  return THREAD_NO_ERROR;
+}
+
+wxThreadError wxThread::Pause()
+{
+  return THREAD_NO_ERROR;
+}
+
+wxThreadError wxThread::Resume()
+{
+  return THREAD_NO_ERROR;
 }
 
 void *wxThread::Join()
@@ -154,10 +166,10 @@ void *wxThread::Join()
     int stat;
 
     if (do_unlock)
-      wxMainMutex.Unlock();
+      wxMainMutex->Unlock();
     waitpid(p_internal->thread_id, &stat, 0);
     if (do_unlock)
-      wxMainMutex.Lock();
+      wxMainMutex->Lock();
     if (!WIFEXITED(stat) && !WIFSIGNALED(stat))
       return 0;
     p_internal->state = STATE_IDLE;
@@ -188,11 +200,21 @@ int wxThread::GetPriority() const
     return 0;
 }
 
-bool wxThreadIsMain()
+bool wxThread::IsMain()
 {
   return (int)getpid() == main_id;
 }
 
+bool wxThread::IsAlive() const
+{
+  return (p_internal->state == STATE_RUNNING);
+}
+
+bool wxThread::IsRunning() const
+{
+  return (p_internal->state == STATE_RUNNING);
+}
+
 wxThread::wxThread()
 {
   p_internal = new wxThreadPrivate();
@@ -216,14 +238,16 @@ class wxThreadModule : public wxModule {
   DECLARE_DYNAMIC_CLASS(wxThreadModule)
 public:
   virtual bool OnInit() {
+    wxMainMutex = new wxMutex();
     wxThreadGuiInit();
     p_mainid = (int)getpid();
-    wxMainMutex.Lock();
+    wxMainMutex->Lock();
   }
 
   virtual void OnExit() {
-    wxMainMutex.Unlock();
+    wxMainMutex->Unlock();
     wxThreadGuiExit();
+    delete wxMainMutex;
   }
 };