]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk1/threadpsx.cpp
#ifdefed out Ole... functions for Cygwin.
[wxWidgets.git] / src / gtk1 / threadpsx.cpp
index 9623b91c303a63aeef06bf525e80071857d1b9bf..2fb5106aa743b3c45a3202093c51cc9562f57014 100644 (file)
@@ -19,6 +19,7 @@
 #include "wx/thread.h"
 #include "wx/module.h"
 #include "wx/utils.h"
+#include "wx/log.h"
 
 enum thread_state {
   STATE_IDLE = 0,
@@ -37,7 +38,7 @@ static pthread_t p_mainid;
 static wxMutex p_list_mutex;
 static wxList p_threads_list;
 
-wxMutex wxMainMutex; // controls access to all GUI functions
+wxMutex *wxMainMutex; // controls access to all GUI functions
 
 /////////////////////////////////////////////////////////////////////////////
 // GUI thread manager
@@ -63,8 +64,7 @@ wxMutex::wxMutex()
 wxMutex::~wxMutex()
 {
   if (m_locked > 0)
-    wxDebugMsg("wxMutex warning: freeing a locked mutex (%d locks)\n",
-               m_locked);
+    wxLogDebug( "wxMutex warning: freeing a locked mutex (%d locks)\n", m_locked );
 
   pthread_mutex_destroy(&(p_internal->p_mutex));
   delete p_internal;
@@ -288,10 +288,10 @@ void *wxThread::Join()
       wxYield();
 
     if (do_unlock)
-      wxMainMutex.Unlock();
+      wxMainMutex->Unlock();
     pthread_join(p_internal->thread_id, &status);
     if (do_unlock)
-      wxMainMutex.Lock();
+      wxMainMutex->Lock();
 
     p_list_mutex.Lock();
     delete p_threads_list.Nth(p_internal->id);
@@ -377,17 +377,19 @@ class wxThreadModule : public wxModule {
   DECLARE_DYNAMIC_CLASS(wxThreadModule)
 public:
   virtual bool OnInit() {
+    wxMainMutex = new wxMutex();
     wxThreadGuiInit();
     p_mainid = pthread_self();
-    p_threads_list = wxList(wxKEY_INTEGER);
-    wxMainMutex.Lock();
+//    p_threads_list = wxList(wxKEY_INTEGER);
+    wxMainMutex->Lock();
 
     return TRUE;
   }
 
   virtual void OnExit() {
-    wxMainMutex.Unlock();
+    wxMainMutex->Unlock();
     wxThreadGuiExit();
+    delete wxMainMutex;
   }
 };