X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/0470b1e6fe7a49bb87756006ef9fc232e3dbaaf8..3a5bcc4db0851bf8cd3063917511b0b17c7f9679:/src/motif/timer.cpp diff --git a/src/motif/timer.cpp b/src/motif/timer.cpp index 41e30b7ae3..f4ef797df6 100644 --- a/src/motif/timer.cpp +++ b/src/motif/timer.cpp @@ -9,28 +9,34 @@ // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) #pragma implementation "timer.h" #endif #include "wx/timer.h" #include "wx/app.h" -#include "wx/list.h" +#include "wx/hashmap.h" +#ifdef __VMS__ +#pragma message disable nosimpint +#endif #include +#ifdef __VMS__ +#pragma message enable nosimpint +#endif #include "wx/motif/private.h" -#if !USE_SHARED_LIBRARY -IMPLEMENT_ABSTRACT_CLASS(wxTimer, wxObject) -#endif +IMPLEMENT_ABSTRACT_CLASS(wxTimer, wxObject); -static wxList wxTimerList(wxKEY_INTEGER); +WX_DECLARE_VOIDPTR_HASH_MAP(wxTimer*, wxTimerHashMap); + +static wxTimerHashMap s_timers; void wxTimerCallback (wxTimer * timer) { // Check to see if it's still on - if (!wxTimerList.Find((long)timer)) + if (s_timers.find(timer) == s_timers.end()) return; if (timer->m_id == 0) @@ -47,15 +53,16 @@ void wxTimerCallback (wxTimer * timer) timer->Notify(); } -wxTimer::wxTimer() +void wxTimer::Init() { m_id = 0; + m_milli = 1000; } wxTimer::~wxTimer() { - wxTimer::Stop(); - wxTimerList.DeleteObject(this); + Stop(); + s_timers.erase(this); } bool wxTimer::Start(int milliseconds, bool mode) @@ -64,8 +71,8 @@ bool wxTimer::Start(int milliseconds, bool mode) (void)wxTimerBase::Start(milliseconds, mode); - if (!wxTimerList.Find((long)this)) - wxTimerList.Append((long)this, this); + if (s_timers.find(this) == s_timers.end()) + s_timers[this] = this; m_id = XtAppAddTimeOut((XtAppContext) wxTheApp->GetAppContext(), m_milli,