]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk1/threadno.cpp
fixed #include paths to use local copies of png/gdk_imlib/zlib headers
[wxWidgets.git] / src / gtk1 / threadno.cpp
index 06acae02606801fe4633579055102e4eaf4ca83f..deccf57775bc06b0cae7b67ccaa1ecd1a18b172a 100644 (file)
 #endif
 
 #include "wx/wx.h"
 #endif
 
 #include "wx/wx.h"
+#include "wx/thread.h"
 
 
-wxMutex::wxMutex(void)
+wxMutex::wxMutex()
 {
 {
-  m_locked = FALSE;
+  m_locked = 0;
 }
 
 }
 
-wxMutex::~wxMutex(void)
+wxMutex::~wxMutex()
 {
 {
+  if (m_locked)
+    wxDebugMsg("wxMutex warning: destroying a locked mutex (%d locks)\n", m_locked);
 }
 
 }
 
-MutexError wxMutex::Lock(void)
+MutexError wxMutex::Lock()
 {
 {
-  m_locked = TRUE;
-  return NO_ERROR;
+  m_locked++;
+  return MUTEX_NO_ERROR;
 }
 
 }
 
-MutexError wxMutex::TryLock(void)
+MutexError wxMutex::TryLock()
 {
 {
-  m_locked = TRUE;
-  return NO_ERROR;
+  if (m_locked > 0)
+    return MUTEX_BUSY;
+  m_locked++;
+  return MUTEX_NO_ERROR;
 }
 
 }
 
-MutexError wxMutex::Unlock(void)
+MutexError wxMutex::Unlock()
 {
 {
-  m_locked = FALSE;
-  return NO_ERROR;
+  if (m_locked == 0)
+    return MUTEX_UNLOCKED;
+  m_locked--;
+  return MUTEX_NO_ERROR;
 }
 
 }
 
-wxCondition::wxCondition(void)
+wxCondition::wxCondition()
 {
 }
 
 {
 }
 
-wxCondition::~wxCondition(void)
+wxCondition::~wxCondition()
 {
 }
 
 {
 }
 
@@ -59,11 +66,11 @@ bool wxCondition::Wait(wxMutex& WXUNUSED(mutex), unsigned long WXUNUSED(sec),
   return FALSE;
 }
 
   return FALSE;
 }
 
-void wxCondition::Signal(void)
+void wxCondition::Signal()
 {
 }
 
 {
 }
 
-void wxCondition::Broadcast(void)
+void wxCondition::Broadcast()
 {
 }
 
 {
 }
 
@@ -72,23 +79,23 @@ struct wxThreadPrivate {
        void* exit_status;
 };
 
        void* exit_status;
 };
 
-ThreadError wxThread::Create(void)
+ThreadError wxThread::Create()
 {
   p_internal->exit_status = Entry();
   OnExit();
 {
   p_internal->exit_status = Entry();
   OnExit();
-  return NO_ERROR;
+  return THREAD_NO_ERROR;
 }
 
 }
 
-ThreadError wxThread::Destroy(void)
+ThreadError wxThread::Destroy()
 {
 {
-  return RUNNING;
+  return THREAD_RUNNING;
 }
 
 }
 
-void wxThread::DifferDestroy(void)
+void wxThread::DeferDestroy()
 {
 }
 
 {
 }
 
-void wxThread::TestDestroy(void)
+void wxThread::TestDestroy()
 {
 }
 
 {
 }
 
@@ -97,23 +104,23 @@ void *wxThread::Join()
   return p_internal->exit_status;
 }
 
   return p_internal->exit_status;
 }
 
-unsigned long wxThread::GetID()
+unsigned long wxThread::GetID() const
 {
   return 0;
 }
 
 {
   return 0;
 }
 
-bool wxThread::IsMain(void)
+bool wxThread::IsMain()
 {
   return TRUE;
 }
 
 {
   return TRUE;
 }
 
-bool wxThread::IsAlive(void)
+bool wxThread::IsAlive() const
 {
   return FALSE;
 }
 
 void wxThread::SetPriority(int WXUNUSED(prio)) { }
 {
   return FALSE;
 }
 
 void wxThread::SetPriority(int WXUNUSED(prio)) { }
-int wxThread::GetPriority(void) { }
+int wxThread::GetPriority() const { }
 
 wxMutex wxMainMutex; // controls access to all GUI functions
 
 
 wxMutex wxMainMutex; // controls access to all GUI functions
 
@@ -135,22 +142,23 @@ void wxThread::OnExit()
   Join();
 }
 
   Join();
 }
 
-// Global initialization
-static void wxThreadInit(void *WXUNUSED(client))
-{
+
+// Automatic initialization
+class wxThreadModule : public wxModule {
+  DECLARE_DYNAMIC_CLASS(wxThreadModule)
+public:
+  bool OnInit();
+  void OnExit();
+};
+
+bool wxThreadModule::OnInit() {
   wxMainMutex.Lock();
   wxMainMutex.Lock();
+  return TRUE;
 }
 
 }
 
-// Global cleanup
-static void wxThreadExit(void *WXUNUSED(client))
+void wxThreadModule::wxThreadExit()
 {
   wxMainMutex.Unlock();
 }
 
 {
   wxMainMutex.Unlock();
 }
 
-// Let automatic initialization be performed from wxCommonInit().
-static struct
-wxThreadGlobal {
-  wxThreadGlobal() {
-      wxRegisterModuleFunction(wxThreadInit, wxThreadExit, NULL);
-  }
-} dummy;
+IMPLEMENT_DYNAMIC_CLASS(wxThreadModule, wxModule)