Better fix
[wxWidgets.git] / include / wx / stopwatch.h
index 55f7027b52fe76abaca92232b0e9c8728bfbfaef..583c75a495242563f9db20f11fc9c3e54746437e 100644 (file)
@@ -4,13 +4,16 @@
 // Author:      Julian Smart (wxTimer), Sylvain Bougnoux (wxStopWatch)
 // Created:     26.06.03 (extracted from wx/timer.h)
 // RCS-ID:      $Id$
-// Copyright:   (c) 1998-2003 wxWindows team
+// Copyright:   (c) 1998-2003 Julian Smart, Sylvain Bougnoux
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 #ifndef _WX_STOPWATCH_H_
 #define _WX_STOPWATCH_H_
-//
+
+#include "wx/defs.h"
+#include "wx/longlong.h"
+
 // ----------------------------------------------------------------------------
 // wxStopWatch: measure time intervals with up to 1ms resolution
 // ----------------------------------------------------------------------------
@@ -29,7 +32,7 @@ public:
     // pause the stop watch
     void Pause()
     {
-        if ( !m_pauseCount++ )
+        if ( m_pauseCount++ == 0 )
             m_pause = GetElapsedTime();
     }
 
@@ -39,7 +42,7 @@ public:
         wxASSERT_MSG( m_pauseCount > 0,
                       _T("Resuming stop watch which is not paused") );
 
-        if ( !--m_pauseCount )
+        if ( --m_pauseCount == 0 )
             Start(m_pause);
     }
 
@@ -63,17 +66,17 @@ private:
 
 #endif // wxUSE_STOPWATCH
 
-#if wxUSE_LONGLONG
+#if wxUSE_LONGLONG && WXWIN_COMPATIBILITY_2_6
 
-// Starts a global timer
-// -- DEPRECATED: use wxStopWatch instead
-void WXDLLIMPEXP_BASE wxStartTimer();
+    // Starts a global timer
+    // -- DEPRECATED: use wxStopWatch instead
+    wxDEPRECATED( void WXDLLIMPEXP_BASE wxStartTimer() );
 
-// Gets elapsed milliseconds since last wxStartTimer or wxGetElapsedTime
-// -- DEPRECATED: use wxStopWatch instead
-long WXDLLIMPEXP_BASE wxGetElapsedTime(bool resetTimer = TRUE);
+    // Gets elapsed milliseconds since last wxStartTimer or wxGetElapsedTime
+    // -- DEPRECATED: use wxStopWatch instead
+    wxDEPRECATED( long WXDLLIMPEXP_BASE wxGetElapsedTime(bool resetTimer = true) );
 
-#endif // wxUSE_LONGLONG
+#endif // wxUSE_LONGLONG && WXWIN_COMPATIBILITY_2_6
 
 // ----------------------------------------------------------------------------
 // global time functions
@@ -86,11 +89,26 @@ extern long WXDLLIMPEXP_BASE wxGetLocalTime();
 extern long WXDLLIMPEXP_BASE wxGetUTCTime();
 
 #if wxUSE_LONGLONG
-// Get number of milliseconds since local time 00:00:00 Jan 1st 1970
-extern wxLongLong WXDLLIMPEXP_BASE wxGetLocalTimeMillis();
+    typedef wxLongLong wxMilliClock_t;
+    inline long wxMilliClockToLong(wxLongLong ll) { return ll.ToLong(); }
+#else
+    typedef double wxMilliClock_t;
+    inline long wxMilliClockToLong(double d) { return wx_truncate_cast(long, d); }
 #endif // wxUSE_LONGLONG
 
+// Get number of milliseconds since local time 00:00:00 Jan 1st 1970
+extern wxMilliClock_t WXDLLIMPEXP_BASE wxGetLocalTimeMillis();
+
 #define wxGetCurrentTime() wxGetLocalTime()
 
-#endif // _WX_STOPWATCH_H_
+// on some really old systems gettimeofday() doesn't have the second argument,
+// define wxGetTimeOfDay() to hide this difference
+#ifdef HAVE_GETTIMEOFDAY
+    #ifdef WX_GETTIMEOFDAY_NO_TZ
+        #define wxGetTimeOfDay(tv)      gettimeofday(tv)
+    #else
+        #define wxGetTimeOfDay(tv)      gettimeofday((tv), NULL)
+    #endif
+#endif // HAVE_GETTIMEOFDAY
 
+#endif // _WX_STOPWATCH_H_