X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/bbcd408aa76716cd34e9f26440e326a65a002a2d..3a7c125370cf6fd2b66eb06ba031efcfd5c5b9b0:/src/generic/timer.cpp diff --git a/src/generic/timer.cpp b/src/generic/timer.cpp index c46854c9e9..2f0df9a975 100644 --- a/src/generic/timer.cpp +++ b/src/generic/timer.cpp @@ -3,11 +3,11 @@ // Purpose: wxTimer implementation // Author: Vaclav Slavik // Id: $Id$ -// Copyright: (c) 2001-2002 SciTech Software, Inc. (www.scitechsoft.com) +// Copyright: (c) Vaclav Slavik // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) #pragma implementation "timer.h" #endif @@ -41,13 +41,25 @@ // if we are unlucky and the latter combines information from two sources. #include "wx/mgl/private.h" extern "C" ulong _EVT_getTicks(); - #define GetMillisecondsTime() _EVT_getTicks() -#else -// #define GetMillisecondsTime() wxGetLocalTimeMillis().ToLong() - // Suppresses the debug warning in ToLong. FIXME: check - // that we don't drastically lose precision - #define GetMillisecondsTime() (unsigned long) wxGetLocalTimeMillis().GetValue() -#endif + #define GetMillisecondsTime _EVT_getTicks + + typedef ulong wxTimerTick_t; + + #define wxTimerTickFmtSpec _T("lu") + #define wxTimerTickPrintfArg(tt) (tt) +#else // !__WXMGL__ + #define GetMillisecondsTime wxGetLocalTimeMillis + + typedef wxLongLong wxTimerTick_t; + + #if wxUSE_LONGLONG_WX + #define wxTimerTickFmtSpec wxLongLongFmtSpec _T("d") + #define wxTimerTickPrintfArg(tt) (tt.GetValue()) + #else // using native wxLongLong + #define wxTimerTickFmtSpec _T("s") + #define wxTimerTickPrintfArg(tt) (tt.ToString().c_str()) + #endif // wx/native long long +#endif // __WXMGL__/!__WXMGL__ // ---------------------------------------------------------------------------- // helper structures and wxTimerScheduler @@ -63,7 +75,7 @@ public: wxTimer *timer; bool running; wxTimerDesc *next, *prev; - unsigned long shotTime; + wxTimerTick_t shotTime; volatile bool *deleteFlag; // see comment in ~wxTimer }; @@ -72,7 +84,7 @@ class wxTimerScheduler public: wxTimerScheduler() : m_timers(NULL) {} - void QueueTimer(wxTimerDesc *desc, unsigned long when = 0); + void QueueTimer(wxTimerDesc *desc, wxTimerTick_t when = 0); void RemoveTimer(wxTimerDesc *desc); void NotifyTimers(); @@ -80,7 +92,7 @@ private: wxTimerDesc *m_timers; }; -void wxTimerScheduler::QueueTimer(wxTimerDesc *desc, unsigned long when) +void wxTimerScheduler::QueueTimer(wxTimerDesc *desc, wxTimerTick_t when) { if ( desc->running ) return; // already scheduled @@ -90,8 +102,9 @@ void wxTimerScheduler::QueueTimer(wxTimerDesc *desc, unsigned long when) desc->shotTime = when; desc->running = TRUE; - wxLogTrace("timer", "queued timer %p at tick %ld", - desc->timer, (long) when); + wxLogTrace( wxT("timer"), + wxT("queued timer %p at tick %") wxTimerTickFmtSpec, + desc->timer, wxTimerTickPrintfArg(when)); if ( m_timers ) { @@ -128,7 +141,7 @@ void wxTimerScheduler::NotifyTimers() { bool oneShot; volatile bool timerDeleted; - unsigned long now = GetMillisecondsTime(); + wxTimerTick_t now = GetMillisecondsTime(); wxTimerDesc *desc; while ( m_timers && m_timers->shotTime <= now ) @@ -143,8 +156,11 @@ void wxTimerScheduler::NotifyTimers() if ( !timerDeleted ) { - wxLogTrace("timer", "notified timer %p sheduled for %ld", - desc->timer, (long) desc->shotTime); + wxLogTrace( wxT("timer"), + wxT("notified timer %p sheduled for %") + wxTimerTickFmtSpec, + desc->timer, + wxTimerTickPrintfArg(desc->shotTime) ); desc->deleteFlag = NULL; if ( !oneShot ) @@ -172,7 +188,7 @@ void wxTimer::Init() wxTimer::~wxTimer() { - wxLogTrace("timer", "destroying timer %p...", this); + wxLogTrace( wxT("timer"), wxT("destroying timer %p..."), this); if ( IsRunning() ) Stop(); @@ -184,7 +200,7 @@ wxTimer::~wxTimer() *m_desc->deleteFlag = TRUE; delete m_desc; - wxLogTrace("timer", " ...done destroying timer %p...", this); + wxLogTrace( wxT("timer"), wxT(" ...done destroying timer %p..."), this); } bool wxTimer::IsRunning() const @@ -194,7 +210,7 @@ bool wxTimer::IsRunning() const bool wxTimer::Start(int millisecs, bool oneShot) { - wxLogTrace("timer", "started timer %p: %i ms, oneshot=%i", + wxLogTrace( wxT("timer"), wxT("started timer %p: %i ms, oneshot=%i"), this, millisecs, oneShot); if ( !wxTimerBase::Start(millisecs, oneShot) )