X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ad81651f00edc6f489d9b6a0839d316a964fd521..65aeaf19f6781193697d28f868901a80ee623396:/src/motif/timer.cpp?ds=sidebyside diff --git a/src/motif/timer.cpp b/src/motif/timer.cpp index b28820804c..48677e8a1f 100644 --- a/src/motif/timer.cpp +++ b/src/motif/timer.cpp @@ -1,21 +1,23 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: timer.cpp +// Name: src/motif/timer.cpp // Purpose: wxTimer implementation // Author: Julian Smart // Modified by: // Created: 17/09/98 // RCS-ID: $Id$ // Copyright: (c) Julian Smart -// Licence: wxWindows licence +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ -#pragma implementation "timer.h" -#endif +// For compilers that support precompilation, includes "wx.h". +#include "wx/wxprec.h" #include "wx/timer.h" -#include "wx/app.h" -#include "wx/list.h" + +#ifndef WX_PRECOMP + #include "wx/app.h" + #include "wx/hashmap.h" +#endif #ifdef __VMS__ #pragma message disable nosimpint @@ -27,18 +29,20 @@ #include "wx/motif/private.h" -IMPLEMENT_ABSTRACT_CLASS(wxTimer, wxObject) +IMPLEMENT_ABSTRACT_CLASS(wxTimer, wxEvtHandler) + +WX_DECLARE_VOIDPTR_HASH_MAP(wxTimer*, wxTimerHashMap); -static wxList wxTimerList(wxKEY_INTEGER); +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) - return; // Avoid to process spurious timer events + return; // Avoid to process spurious timer events if (!timer->m_oneShot) timer->m_id = XtAppAddTimeOut((XtAppContext) wxTheApp->GetAppContext(), @@ -51,15 +55,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) @@ -68,14 +73,14 @@ 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, (XtTimerCallbackProc) wxTimerCallback, (XtPointer) this); - return TRUE; + return true; } void wxTimer::Stop() @@ -87,5 +92,3 @@ void wxTimer::Stop() } m_milli = 0 ; } - -