X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/91b8de8dee3e7ae3c4edc0ab0923b84bba20d9c4..5e84fc5a820a15a1ce2d32d2ae71f0bf92abda3d:/src/common/timercmn.cpp diff --git a/src/common/timercmn.cpp b/src/common/timercmn.cpp index 3a0f166553..b1556e325e 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=wxGetCurrentMTime(); } // Returns elapsed time in milliseconds long wxGetElapsedTime(bool resetTimer) +{ + long oldTime = wxStartTime; + long newTime=wxGetCurrentMTime(); + + if (resetTimer) wxStartTime = newTime; + return newTime - oldTime; +} + + +// Get number of seconds since 00:00:00 GMT, Jan 1st 1970. +long wxGetCurrentTime(void) +{ + return wxGetCurrentMTime()/1000; +} + +// return GMT time in millisecond +long wxGetCurrentMTime() { #if defined(__xlC__) || defined(__AIX__) || defined(__SVR4__) || defined(__SYSV__) || \ (defined(__GNUWIN32__) && !defined(__MINGW32__)) // || defined(__AIXV3__) @@ -107,85 +104,113 @@ 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=wxGetCurrentMTime()-t; + m_pause=0; +} + +void wxChrono::Pause() +{ + m_pause=wxGetCurrentMTime()-m_t0; +} + +void wxChrono::Resume() +{ + m_t0=wxGetCurrentMTime()-m_pause; + m_pause=0; +} + +long wxChrono::Time() +{ + if (m_pause) return m_pause; + return wxGetCurrentMTime()-m_t0; +} + + + // EXPERIMENTAL: comment this out if it doesn't compile. #ifndef __VMS__ bool wxGetLocalTime(long *timeZone, int *dstObserved) { -#if defined(__MINGW32__) && defined(__EGCS__) - time_t t0; - struct tm *tp; - time(&t0); - tp = localtime(&t0); - *timeZone = _timezone; // tp->tm_gmtoff; // ??? - *dstObserved = tp->tm_isdst; -#elif defined(__MINGW32__) +#if defined(__MINGW32__) time_t t0; struct tm *tp; time(&t0); tp = localtime(&t0); +# if __GNUC__ == 2 && __GNUC_MINOR__ <= 8 + // gcc 2.8.x or earlier timeb tz; ftime(& tz); *timeZone = tz._timezone; +# else + // egcs or gcc 2.95 + *timeZone = _timezone; // tp->tm_gmtoff; // ??? +# endif *dstObserved = tp->tm_isdst; #else - -#if (((defined(__SYSV__) && !defined(__HPUX__)) || defined(__MSDOS__) || defined(__WXMSW__)) \ +// not mingw32... +#if (((defined(__SYSV__) && !defined(__HPUX__)) || defined(__MSDOS__) || defined(__WXMSW__) || defined(__WXPM__)) \ && !defined(__GNUWIN32__) && !defined(__MWERKS__) ) -#if defined(__BORLANDC__) +# if defined(__BORLANDC__) /* Borland uses underscores */ *timeZone = _timezone; *dstObserved = _daylight; -#elif defined(__SALFORDC__) +# elif defined(__SALFORDC__) *timeZone = _timezone; *dstObserved = daylight; -#else +# elif defined(__VISAGECPP__) + *timeZone = _timezone; + *dstObserved = daylight; +# else *timeZone = timezone; *dstObserved = daylight; -#endif +# endif #elif defined(__xlC__) || defined(__AIX__) || defined(__SVR4__) || defined(__SYSV__) || defined(__MWERKS__) || (defined(__GNUWIN32__) && !defined(__MINGW32__)) // || defined(__AIXV3__) -#ifndef __MWERKS__ // shouldn't this be one scope below ? +# ifndef __MWERKS__ // shouldn't this be one scope below ? struct timeval tp; -#endif -#if defined(__SYSV__) || (defined(__GNUWIN32__) && !defined(__MINGW32)) +# endif +# if defined(__SYSV__) || (defined(__GNUWIN32__) && !defined(__MINGW32)) struct timezone tz; gettimeofday(&tp, &tz); *timeZone = 60*(tz.tz_minuteswest); *dstObserved = tz.tz_dsttime; -#else +# else time_t t0; struct tm *tp; time(&t0); tp = localtime(&t0); -#ifndef __MWERKS__ +# ifndef __MWERKS__ *timeZone = tp->tm_gmtoff; // ??? -#else +# else *timeZone = 0 ; -#endif +# endif *dstObserved = tp->tm_isdst; #endif #elif defined(__WXSTUBS__) @@ -203,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 -*/ -} -