X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/2c8e47380ebbcb5764307d4a8b15e84d8ce74ccf..3bfbab1e836246cda3fdbb436ebb22a72c6986de:/src/common/timercmn.cpp diff --git a/src/common/timercmn.cpp b/src/common/timercmn.cpp index e0032d0dc4..67cec8530c 100644 --- a/src/common/timercmn.cpp +++ b/src/common/timercmn.cpp @@ -19,7 +19,7 @@ // ============================================================================ // ---------------------------------------------------------------------------- -// headers +// wxWin headers // ---------------------------------------------------------------------------- #ifdef __GNUG__ @@ -41,10 +41,18 @@ #include "wx/timer.h" #include "wx/longlong.h" +// ---------------------------------------------------------------------------- +// System headers +// ---------------------------------------------------------------------------- + #if defined(__WIN32__) #include #endif +#if defined(__WIN32__) && !defined(HAVE_FTIME) + #define HAVE_FTIME +#endif + #include #ifndef __WXMAC__ #include // for time_t @@ -90,12 +98,12 @@ wxLongLong wxGetLocalTimeMillis(); // implementation // ============================================================================ -#if wxUSE_GUI - // ---------------------------------------------------------------------------- // wxTimerBase // ---------------------------------------------------------------------------- +#if wxUSE_GUI + void wxTimerBase::Notify() { // the base class version generates an event if it has owner - which it @@ -253,12 +261,16 @@ wxLongLong wxGetLocalTimeMillis() val *= tp.tv_sec; return (val + (tp.tv_usec / 1000)); } - return 0; + else + { + wxLogError(_("wxGetTimeOfDay failed.")); + return 0; + } #elif defined(HAVE_FTIME) struct timeb tp; - // ftime() is void and not int in some mingw32 headers, so don't test the - // return code (well, it shouldn't fail anyhow...) + // ftime() is void and not int in some mingw32 headers, so don't + // test the return code (well, it shouldn't fail anyhow...) (void)ftime(&tp); val *= tp.time; return (val + tp.millitm); @@ -267,23 +279,28 @@ wxLongLong wxGetLocalTimeMillis() // 00:00:00 Jan 1st 1970 and then whatever is available // to get millisecond resolution. // - // TODO: This might lead to a problem if the clocks use - // different sources. + // NOTE that this might lead to a problem if the clocks + // use different sources, so this approach should be + // avoided where possible. val *= wxGetLocalTime(); -#if defined (__WIN32__) - SYSTEMTIME st; - ::GetLocalTime(&st); - val += st.wMilliseconds; -#elif defined(__VISAGECPP__) +#if defined(__VISAGECPP__) DATETIME dt; ::DosGetDateTime(&dt); val += (dt.hundredths*10); +#elif defined (__WIN32__) +#warning "Possible clock skew bug in wxStopWatch!" + SYSTEMTIME st; + ::GetLocalTime(&st); + val += st.wMilliseconds; #else +#if !defined(__VISUALC__) && !defined(__BORLANDC__) #warning "wxStopWatch will be up to second resolution!" +#endif #endif return val; + #endif }