]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/timercmn.cpp
new wxASSERT implementation using wxAssert() helper function
[wxWidgets.git] / src / common / timercmn.cpp
index 234ea9e0c29c81299a05b91369b552a236217921..63f12e82ce097f731f391be43308fa1ed6fd8456 100644 (file)
@@ -49,7 +49,7 @@
     #include <windows.h>
 #endif
 
-#if defined(__WIN32__) && !defined(HAVE_FTIME)
+#if defined(__WIN32__) && !defined(HAVE_FTIME) && !defined(__MWERKS__)
     #define HAVE_FTIME
 #endif
 
 #  endif
 #endif
 
+#if defined(__MWERKS__) && defined(__WXMSW__)
+#   undef HAVE_FTIME
+#   undef HAVE_GETTIMEOFDAY
+#endif
+
 #include <time.h>
 #ifndef __WXMAC__
     #include <sys/types.h>      // for time_t
 
 #if wxUSE_GUI && wxUSE_TIMER
 
+wxTimerBase::~wxTimerBase()
+{
+    // this destructor is required for Darwin
+}
+
 void wxTimerBase::Notify()
 {
     // the base class version generates an event if it has owner - which it
@@ -151,12 +161,12 @@ void wxStopWatch::Start(long t)
 
 long wxStopWatch::GetElapsedTime() const
 {
-  return (wxGetLocalTimeMillis() - m_t0).GetLo();
+    return (wxGetLocalTimeMillis() - m_t0).GetLo();
 }
 
 long wxStopWatch::Time() const
 {
-    return (m_pause ? m_pause : GetElapsedTime());
+    return m_pauseCount ? m_pause : GetElapsedTime();
 }
 
 #endif // wxUSE_LONGLONG
@@ -284,7 +294,24 @@ wxLongLong wxGetLocalTimeMillis()
     // If possible, use a function which avoids conversions from
     // broken-up time structures to milliseconds
 
-#if defined(HAVE_GETTIMEOFDAY)
+#if defined(__WXMSW__) && defined(__MWERKS__)
+    // This should probably be the way all WXMSW compilers should do it
+    // Go direct to the OS for time
+
+    SYSTEMTIME thenst = { 1970, 1, 4, 1, 0, 0, 0, 0 };  // 00:00:00 Jan 1st 1970
+    FILETIME thenft;
+    SystemTimeToFileTime( &thenst, &thenft );
+    wxLongLong then( thenft.dwHighDateTime, thenft.dwLowDateTime );   // time in 100 nanoseconds
+
+    SYSTEMTIME nowst;
+    GetLocalTime( &nowst );
+    FILETIME nowft;
+    SystemTimeToFileTime( &nowst, &nowft );
+    wxLongLong now( nowft.dwHighDateTime, nowft.dwLowDateTime );   // time in 100 nanoseconds
+
+    return ( now - then ) / 10000.0;  // time from 00:00:00 Jan 1st 1970 to now in milliseconds
+    
+#elif defined(HAVE_GETTIMEOFDAY)
     struct timeval tp;
     if ( wxGetTimeOfDay(&tp, (struct timezone *)NULL) != -1 )
     {
@@ -330,7 +357,7 @@ wxLongLong wxGetLocalTimeMillis()
     // do NOT just shut off these warnings, drop me a line instead at
     // <guille@iies.es>
 
-    #if defined(__VISUALC__)
+    #if defined(__VISUALC__) || defined (__WATCOMC__)
         #pragma message("wxStopWatch will be up to second resolution!")
     #elif defined(__BORLANDC__)
         #pragma message "wxStopWatch will be up to second resolution!"