Took care of those missing frees from failure conditions in wxExecute.
[wxWidgets.git] / src / unix / threadpsx.cpp
index ddb603d1726509fbf1c68b059d6a8d77fe7505b2..d7dac9c864feb37215c1ece6295119bfe5f4a41a 100644 (file)
     #include <sched.h>
 #endif
 
+#ifdef __WXGTK12__
+#include "gtk/gtk.h"
+#endif
+
 // ----------------------------------------------------------------------------
 // constants
 // ----------------------------------------------------------------------------
@@ -81,8 +85,10 @@ static pthread_t gs_tidMain;
 // the key for the pointer to the associated wxThread object
 static pthread_key_t gs_keySelf;
 
+#ifndef __WXGTK12__
 // this mutex must be acquired before any call to a GUI function
 static wxMutex *gs_mutexGui;
+#endif
 
 // ============================================================================
 // implementation
@@ -765,12 +771,15 @@ bool wxThreadModule::OnInit()
         return FALSE;
     }
 
+#ifndef __WXGTK12__
     gs_mutexGui = new wxMutex();
-
-    //wxThreadGuiInit();
+#endif
 
     gs_tidMain = pthread_self();
+
+#ifndef __WXGTK12__
     gs_mutexGui->Lock();
+#endif
 
     return TRUE;
 }
@@ -789,12 +798,12 @@ void wxThreadModule::OnExit()
         gs_allThreads[n]->Delete();
     }
 
+#ifndef __WXGTK12__
     // destroy GUI mutex
     gs_mutexGui->Unlock();
 
-    //wxThreadGuiExit();
-
     delete gs_mutexGui;
+#endif
 
     // and free TLD slot
     (void)pthread_key_delete(gs_keySelf);
@@ -806,12 +815,20 @@ void wxThreadModule::OnExit()
 
 void wxMutexGuiEnter()
 {
+#ifdef __WXGTK12__
+  gdk_threads_enter();
+#else
   gs_mutexGui->Lock();
+#endif
 }
 
 void wxMutexGuiLeave()
 {
+#ifdef __WXGTK12__
+  gdk_threads_leave();
+#else
   gs_mutexGui->Unlock();
+#endif
 }
 
 #endif