X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c2dd8380badebac8dc01f8948288235ae91056ed..a4388683f1b20020b5425c59c401d6ab673860de:/src/gtk1/threadsgi.cpp diff --git a/src/gtk1/threadsgi.cpp b/src/gtk1/threadsgi.cpp index 3503e79616..8dcac37000 100644 --- a/src/gtk1/threadsgi.cpp +++ b/src/gtk1/threadsgi.cpp @@ -21,6 +21,7 @@ #include "wx/thread.h" #include "wx/module.h" #include "wx/utils.h" +#include "wx/log.h" enum thread_state { STATE_IDLE = 0, @@ -34,7 +35,7 @@ enum thread_state { ///////////////////////////////////////////////////////////////////////////// static int p_mainid; -wxMutex wxMainMutex; +wxMutex *wxMainMutex; #include "threadgui.inc" @@ -57,8 +58,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 ); delete p_internal; } @@ -66,24 +66,24 @@ wxMutexError wxMutex::Lock() { spin_lock(&(p_internal->p_mutex)); m_locked++; - return MUTEX_NO_ERROR; + return wxMUTEX_NO_ERROR; } wxMutexError wxMutex::TryLock() { if (acquire_lock(&(p_internal->p_mutex)) != 0) - return MUTEX_BUSY; + return wxMUTEX_BUSY; m_locked++; - return MUTEX_NO_ERROR; + return wxMUTEX_NO_ERROR; } wxMutexError wxMutex::Unlock() { if (m_locked == 0) - return MUTEX_UNLOCKED; + return wxMUTEX_UNLOCKED; release_lock(&(p_internal->p_mutex)); m_locked--; - return MUTEX_NO_ERROR; + return wxMUTEX_NO_ERROR; } // GL: Don't know how it works on SGI. Wolfram ? @@ -132,13 +132,13 @@ void wxThread::Exit(void* status) wxThreadError wxThread::Create() { if (p_internal->state != STATE_IDLE) - return THREAD_RUNNING; + return wxTHREAD_RUNNING; p_internal->state = STATE_RUNNING; if (sproc(p_internal->SprocStart, PR_SALL, this) < 0) { p_internal->state = STATE_IDLE; - return THREAD_NO_RESOURCE; + return wxTHREAD_NO_RESOURCE; } - return THREAD_NO_ERROR; + return wxTHREAD_NO_ERROR; } wxThreadError wxThread::Destroy() @@ -146,17 +146,17 @@ wxThreadError wxThread::Destroy() if (p_internal->state == STATE_RUNNING) p_internal->state = STATE_CANCELED; - return THREAD_NO_ERROR; + return wxTHREAD_NO_ERROR; } wxThreadError wxThread::Pause() { - return THREAD_NO_ERROR; + return wxTHREAD_NO_ERROR; } wxThreadError wxThread::Resume() { - return THREAD_NO_ERROR; + return wxTHREAD_NO_ERROR; } void *wxThread::Join() @@ -166,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; @@ -238,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; } };