X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b89156b5dbb3c1270452379801a79613cd69bb32..ec758a20a2b166b2073e1c902cc745db01290f02:/src/gtk/threadsgi.cpp diff --git a/src/gtk/threadsgi.cpp b/src/gtk/threadsgi.cpp index ea652677e1..66b6b0da7b 100644 --- a/src/gtk/threadsgi.cpp +++ b/src/gtk/threadsgi.cpp @@ -18,6 +18,9 @@ #include #include #include +#include "wx/thread.h" +#include "wx/module.h" +#include "wx/utils.h" enum thread_state { STATE_IDLE = 0, @@ -31,7 +34,7 @@ enum thread_state { ///////////////////////////////////////////////////////////////////////////// static int p_mainid; -wxMutex wxMainMutex; +wxMutex *wxMainMutex; #include "threadgui.inc" @@ -138,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() @@ -151,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; @@ -185,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(); @@ -213,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; } };