From: Sylvain Bougnoux Date: Wed, 29 Sep 1999 19:40:04 +0000 (+0000) Subject: Factorize timercmm.cpp code X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/f0599ea91951caa2cda364498ea844be593b8a2a Factorize timercmm.cpp code Added wxGetCurrentUtime Put extern declaration in wx/timer.h instead of wx/*/timer.h Added wxChrono class git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@3754 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/include/wx/gtk/timer.h b/include/wx/gtk/timer.h index ad3fbc619d..80e302758b 100644 --- a/include/wx/gtk/timer.h +++ b/include/wx/gtk/timer.h @@ -24,22 +24,6 @@ class wxTimer; -//----------------------------------------------------------------------------- -// global functions -//----------------------------------------------------------------------------- - -/* Timer functions (milliseconds) */ -void wxStartTimer(); - -/* Gets time since last wxStartTimer or wxGetElapsedTime */ -long wxGetElapsedTime(bool resetTimer = TRUE); - -/* EXPERIMENTAL: comment this out if it doesn't compile. */ -bool wxGetLocalTime(long *timeZone, int *dstObserved); - -/* Get number of seconds since 00:00:00 GMT, Jan 1st 1970. */ -long wxGetCurrentTime(); - //----------------------------------------------------------------------------- // wxTimer //----------------------------------------------------------------------------- diff --git a/include/wx/gtk1/timer.h b/include/wx/gtk1/timer.h index ad3fbc619d..80e302758b 100644 --- a/include/wx/gtk1/timer.h +++ b/include/wx/gtk1/timer.h @@ -24,22 +24,6 @@ class wxTimer; -//----------------------------------------------------------------------------- -// global functions -//----------------------------------------------------------------------------- - -/* Timer functions (milliseconds) */ -void wxStartTimer(); - -/* Gets time since last wxStartTimer or wxGetElapsedTime */ -long wxGetElapsedTime(bool resetTimer = TRUE); - -/* EXPERIMENTAL: comment this out if it doesn't compile. */ -bool wxGetLocalTime(long *timeZone, int *dstObserved); - -/* Get number of seconds since 00:00:00 GMT, Jan 1st 1970. */ -long wxGetCurrentTime(); - //----------------------------------------------------------------------------- // wxTimer //----------------------------------------------------------------------------- diff --git a/include/wx/mac/timer.h b/include/wx/mac/timer.h index 953da997c6..e668d30bec 100644 --- a/include/wx/mac/timer.h +++ b/include/wx/mac/timer.h @@ -49,16 +49,5 @@ private: * But you may need to modify timercmn.cpp. */ -// Timer functions (milliseconds) -void WXDLLEXPORT wxStartTimer(); -// Gets time since last wxStartTimer or wxGetElapsedTime -long WXDLLEXPORT wxGetElapsedTime(bool resetTimer = TRUE); - -// EXPERIMENTAL: comment this out if it doesn't compile. -bool WXDLLEXPORT wxGetLocalTime(long *timeZone, int *dstObserved); - -// Get number of seconds since 00:00:00 GMT, Jan 1st 1970. -long WXDLLEXPORT wxGetCurrentTime(); - #endif // _WX_TIMER_H_ diff --git a/include/wx/motif/timer.h b/include/wx/motif/timer.h index 7065c19ca4..5091501304 100644 --- a/include/wx/motif/timer.h +++ b/include/wx/motif/timer.h @@ -44,16 +44,5 @@ protected: * But you may need to modify timercmn.cpp. */ -// Timer functions (milliseconds) -void WXDLLEXPORT wxStartTimer(); -// Gets time since last wxStartTimer or wxGetElapsedTime -long WXDLLEXPORT wxGetElapsedTime(bool resetTimer = TRUE); - -// EXPERIMENTAL: comment this out if it doesn't compile. -bool WXDLLEXPORT wxGetLocalTime(long *timeZone, int *dstObserved); - -// Get number of seconds since 00:00:00 GMT, Jan 1st 1970. -long WXDLLEXPORT wxGetCurrentTime(); - #endif // _WX_TIMER_H_ diff --git a/include/wx/msw/timer.h b/include/wx/msw/timer.h index 8ce875f657..1320d5e8c0 100644 --- a/include/wx/msw/timer.h +++ b/include/wx/msw/timer.h @@ -47,16 +47,5 @@ private: DECLARE_ABSTRACT_CLASS(wxTimer) }; -// Timer functions (milliseconds) -void WXDLLEXPORT wxStartTimer(); -// Gets time since last wxStartTimer or wxGetElapsedTime -long WXDLLEXPORT wxGetElapsedTime(bool resetTimer = TRUE); - -// EXPERIMENTAL: comment this out if it doesn't compile. -bool WXDLLEXPORT wxGetLocalTime(long *timeZone, int *dstObserved); - -// Get number of seconds since 00:00:00 GMT, Jan 1st 1970. -long WXDLLEXPORT wxGetCurrentTime(); - #endif // _WX_TIMERH_ diff --git a/include/wx/qt/timer.h b/include/wx/qt/timer.h index 2dc0c5b486..426f431b00 100644 --- a/include/wx/qt/timer.h +++ b/include/wx/qt/timer.h @@ -49,16 +49,5 @@ private: * But you may need to modify timercmn.cpp. */ -// Timer functions (milliseconds) -void WXDLLEXPORT wxStartTimer(); -// Gets time since last wxStartTimer or wxGetElapsedTime -long WXDLLEXPORT wxGetElapsedTime(bool resetTimer = TRUE); - -// EXPERIMENTAL: comment this out if it doesn't compile. -bool WXDLLEXPORT wxGetLocalTime(long *timeZone, int *dstObserved); - -// Get number of seconds since 00:00:00 GMT, Jan 1st 1970. -long WXDLLEXPORT wxGetCurrentTime(); - #endif // _WX_TIMER_H_ diff --git a/include/wx/stubs/timer.h b/include/wx/stubs/timer.h index 953da997c6..e668d30bec 100644 --- a/include/wx/stubs/timer.h +++ b/include/wx/stubs/timer.h @@ -49,16 +49,5 @@ private: * But you may need to modify timercmn.cpp. */ -// Timer functions (milliseconds) -void WXDLLEXPORT wxStartTimer(); -// Gets time since last wxStartTimer or wxGetElapsedTime -long WXDLLEXPORT wxGetElapsedTime(bool resetTimer = TRUE); - -// EXPERIMENTAL: comment this out if it doesn't compile. -bool WXDLLEXPORT wxGetLocalTime(long *timeZone, int *dstObserved); - -// Get number of seconds since 00:00:00 GMT, Jan 1st 1970. -long WXDLLEXPORT wxGetCurrentTime(); - #endif // _WX_TIMER_H_ diff --git a/include/wx/timer.h b/include/wx/timer.h index 0b86490de6..93d3f94f7c 100644 --- a/include/wx/timer.h +++ b/include/wx/timer.h @@ -17,5 +17,36 @@ #include "wx/stubs/timer.h" #endif +class wxChrono +{ +public: + wxChrono(); + + void Start(long t=0); + void Pause(); + void Resume(); + + long Time(); + +private: + long m_t0; + long m_pause; +}; + +// Timer functions (milliseconds) +void WXDLLEXPORT wxStartTimer(); + +// Gets time since last wxStartTimer or wxGetElapsedTime +long WXDLLEXPORT wxGetElapsedTime(bool resetTimer = TRUE); + +// EXPERIMENTAL: comment this out if it doesn't compile. +bool WXDLLEXPORT wxGetLocalTime(long *timeZone, int *dstObserved); + +// Get number of seconds since 00:00:00 GMT, Jan 1st 1970. +long WXDLLEXPORT wxGetCurrentTime(); + +// Get number of milliseconds since 00:00:00 GMT, Jan 1st 1970. +long WXDLLEXPORT wxGetCurrentUTime(); + #endif // _WX_TIMER_H_BASE_ diff --git a/src/common/timercmn.cpp b/src/common/timercmn.cpp index b4142eac9c..db6eeee6b8 100644 --- a/src/common/timercmn.cpp +++ b/src/common/timercmn.cpp @@ -73,31 +73,28 @@ extern "C" int gettimeofday(struct timeval *tp, void *); long wxStartTime = 0; void wxStartTimer(void) { -#if defined(__EMX__) || defined(__xlC__) || defined(__AIX__) || defined(__SVR4__) || defined(__SYSV__) || \ - (defined(__GNUWIN32__) && !defined(__MINGW32__)) // || defined(__AIXV3__) - struct timeval tp; -#if defined(__EMX__) || defined(__SYSV__) || (defined (__GNUWIN32__) && !defined (__MINGW32__)) - gettimeofday(&tp, (struct timezone *)NULL); -#else - gettimeofday(&tp); -#endif - wxStartTime = 1000*tp.tv_sec + tp.tv_usec/1000; -#elif (defined(__SC__) || defined(__SGI__) || defined(___BSDI__) || defined(__ALPHA__) || \ - defined(__MINGW32__) || defined(__MWERKS__) || defined(__FreeBSD__) ) - time_t t0; - struct tm *tp; - time(&t0); - tp = localtime(&t0); - wxStartTime = 1000*(60*(60*tp->tm_hour+tp->tm_min)+tp->tm_sec); -#else - struct timeb tp; - ftime(&tp); - wxStartTime = 1000*tp.time + tp.millitm; -#endif + wxStartTime=wxGetCurrentUTime(); } // Returns elapsed time in milliseconds long wxGetElapsedTime(bool resetTimer) +{ + long oldTime = wxStartTime; + long newTime=wxGetCurrentUTime(); + + if (resetTimer) wxStartTime = newTime; + return newTime - oldTime; +} + + +// Get number of seconds since 00:00:00 GMT, Jan 1st 1970. +long wxGetCurrentTime(void) +{ + return wxGetCurrentUTime()/1000; +} + +// return GMT time in millisecond +long wxGetCurrentUTime() { #if defined(__xlC__) || defined(__AIX__) || defined(__SVR4__) || defined(__SYSV__) || \ (defined(__GNUWIN32__) && !defined(__MINGW32__)) // || defined(__AIXV3__) @@ -107,31 +104,57 @@ long wxGetElapsedTime(bool resetTimer) #else gettimeofday(&tp); #endif - long oldTime = wxStartTime; - long newTime = 1000*tp.tv_sec + tp.tv_usec / 1000; - if (resetTimer) - wxStartTime = newTime; + return (1000*tp.tv_sec + tp.tv_usec / 1000); #elif (defined(__SC__) || defined(__SGI__) || defined(___BSDI__) || defined(__ALPHA__) || \ defined(__MINGW32__)|| defined(__MWERKS__) || defined(__FreeBSD__)) time_t t0; struct tm *tp; time(&t0); tp = localtime(&t0); - long oldTime = wxStartTime; - long newTime = 1000*(60*(60*tp->tm_hour+tp->tm_min)+tp->tm_sec); - if (resetTimer) - wxStartTime = newTime; + return 1000*(60*(60*tp->tm_hour+tp->tm_min)+tp->tm_sec); #else struct timeb tp; ftime(&tp); - long oldTime = wxStartTime; - long newTime = 1000*tp.time + tp.millitm; - if (resetTimer) - wxStartTime = newTime; + return (1000*tp.time + tp.millitm); #endif - return newTime - oldTime; } +//--------------- +// wxChrono class +// This class encapsulates the above fonctions, +// such that several wxChrono can be created +// simultaneously + +wxChrono::wxChrono() +{ + Start(); +} + +void wxChrono::Start(long t) +{ + m_t0=wxGetCurrentUTime()-t; + m_pause=0; +} + +void wxChrono::Pause() +{ + m_pause=wxGetCurrentUTime()-m_t0; +} + +void wxChrono::Resume() +{ + m_t0=wxGetCurrentUTime()-m_pause; + m_pause=0; +} + +long wxChrono::Time() +{ + if (m_pause) return m_pause; + return wxGetCurrentUTime()-m_t0; +} + + + // EXPERIMENTAL: comment this out if it doesn't compile. #ifndef __VMS__ bool wxGetLocalTime(long *timeZone, int *dstObserved) @@ -205,27 +228,3 @@ bool wxGetLocalTime(long *timeZone, int *dstObserved) return TRUE; } #endif - -// Get number of seconds since 00:00:00 GMT, Jan 1st 1970. -long wxGetCurrentTime(void) -{ -#if defined(__xlC__) || defined(__AIX__) || defined(__SVR4__) || defined(__SYSV__) // || defined(__AIXV3__) - struct timeval tp; -#if defined(__SYSV__) || (defined (__GNUWIN32__) && !defined (__MINGW32__) || defined(__FreeBSD__)) - gettimeofday(&tp, (struct timezone *)NULL); -#else - gettimeofday(&tp); -#endif - return tp.tv_sec; -#else // (defined(__SC__) || defined(__SGI__) || defined(___BSDI__) || defined(__ALPHA__)) - return time(0); -#endif -/* -#else - struct timeb tp; - ftime(&tp); - return tp.time; -#endif -*/ -} -