From 91ff98b7b513f9f206cceb71a14ddf635103d264 Mon Sep 17 00:00:00 2001 From: Guillermo Rodriguez Garcia <guille@iies.es> Date: Fri, 3 Mar 2000 13:51:28 +0000 Subject: [PATCH] Added HAVE_FTIME for all Windows compilers git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6408 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/common/timercmn.cpp | 45 +++++++++++++++++++++++++++++------------ 1 file changed, 32 insertions(+), 13 deletions(-) diff --git a/src/common/timercmn.cpp b/src/common/timercmn.cpp index e0032d0dc4..440acfb8dc 100644 --- a/src/common/timercmn.cpp +++ b/src/common/timercmn.cpp @@ -19,7 +19,7 @@ // ============================================================================ // ---------------------------------------------------------------------------- -// headers +// wxWin headers // ---------------------------------------------------------------------------- #ifdef __GNUG__ @@ -41,10 +41,21 @@ #include "wx/timer.h" #include "wx/longlong.h" +// ---------------------------------------------------------------------------- +// System headers +// ---------------------------------------------------------------------------- + #if defined(__WIN32__) #include <windows.h> #endif +#if defined(__WIN32__) && !defined(HAVE_FTIME) + #define HAVE_FTIME + #ifdef (__VISUALC__) + #define ftime _ftime + #endif +#endif + #include <time.h> #ifndef __WXMAC__ #include <sys/types.h> // for time_t @@ -90,12 +101,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 +264,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 +282,27 @@ 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__) +#warning "Possible clock skew bug in wxStopWatch!" 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 #warning "wxStopWatch will be up to second resolution!" #endif return val; + #endif } -- 2.47.2