#include "wx/msw/wrapwin.h"
#endif
#include "wx/log.h"
+ #include "wx/thread.h"
#endif //WX_PRECOMP
// ============================================================================
return freq.QuadPart != 0;
}
- wxCriticalSection cs;
+ wxCRIT_SECT_DECLARE_MEMBER(cs);
LARGE_INTEGER freq;
bool init;
} gs_perfCounter;
#ifdef __WXMSW__
if ( !gs_perfCounter.init )
{
- wxCriticalSectionLocker lock(gs_perfCounter.cs);
+ wxCRIT_SECT_LOCKER(lock, gs_perfCounter.cs);
::QueryPerformanceFrequency(&gs_perfCounter.freq);
// Just a sanity check: it's not supposed to happen but verify that
return gs_perfCounter.freq.QuadPart;
#endif // __WXMSW__
+#ifdef HAVE_GETTIMEOFDAY
+ // With gettimeofday() we can have nominally microsecond precision and
+ // while this is not the case in practice, it's still better than
+ // millisecond.
+ return MICROSECONDS_PER_SECOND;
+#else // !HAVE_GETTIMEOFDAY
// Currently milliseconds are used everywhere else.
return MILLISECONDS_PER_SECOND;
+#endif // HAVE_GETTIMEOFDAY/!HAVE_GETTIMEOFDAY
}
void wxStopWatch::Start(long t0)
{
+ // Calling Start() makes the stop watch run however many times it was
+ // paused before.
+ m_pauseCount = 0;
+
DoStart();
m_t0 -= (wxLongLong(t0)*GetClockFreq())/MILLISECONDS_PER_SECOND;
}
#endif // __WXMSW__
- return wxGetLocalTimeMillis();
+#ifdef HAVE_GETTIMEOFDAY
+ return wxGetUTCTimeUSec();
+#else // !HAVE_GETTIMEOFDAY
+ return wxGetUTCTimeMillis();
+#endif // HAVE_GETTIMEOFDAY/!HAVE_GETTIMEOFDAY
}
wxLongLong wxStopWatch::TimeInMicro() const
// starts the global timer
void wxStartTimer()
{
- wxStartTime = wxGetLocalTimeMillis();
+ wxStartTime = wxGetUTCTimeMillis();
}
// Returns elapsed time in milliseconds
long wxGetElapsedTime(bool resetTimer)
{
wxLongLong oldTime = wxStartTime;
- wxLongLong newTime = wxGetLocalTimeMillis();
+ wxLongLong newTime = wxGetUTCTimeMillis();
if ( resetTimer )
wxStartTime = newTime;