another DEBUG_TRACE for mackie control x-thread requests
[ardour.git] / libs / surfaces / mackie / timer.h
index 88875539fe67546a837e68e2017f691e3d6c3b7f..423b962ce849b85114b0573bcdda884a92c7757d 100644 (file)
@@ -1,19 +1,19 @@
 /*
-Copyright (C) 1998, 1999, 2000, 2007 John Anderson
+  Copyright (C) 1998, 1999, 2000, 2007 John Anderson
 
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU Library General Public License
-as published by the Free Software Foundation; either version 2
-of the License, or (at your option) any later version.
+  This program is free software; you can redistribute it and/or
+  modify it under the terms of the GNU Library General Public License
+  as published by the Free Software Foundation; either version 2
+  of the License, or (at your option) any later version.
 
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
+  This program is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
 
-You should have received a copy of the GNU Library General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+  You should have received a copy of the GNU Library General Public License
+  along with this program; if not, write to the Free Software
+  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 */
 
 #ifndef timer_h
@@ -25,6 +25,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 #include <sys/time.h>
 #endif
 
+namespace ArdourSurface {
+
 namespace Mackie
 {
 
@@ -34,7 +36,7 @@ namespace Mackie
 class Timer
 {
 public:
-       
+
        /**
                start the timer running if true, or just create the
                object if false.
@@ -44,23 +46,14 @@ public:
                if ( shouldStart )
                        start();
        }
-       
+
        /**
                Start the timer running. Return the current timestamp, in milliseconds
        */
        unsigned long start()
        {
-#ifdef _WIN32
-               _start = (unsigned long)::GetTickCount();
-#else
-               gettimeofday ( &_start, 0 );
-#endif
-               running = true;
-#ifdef _WIN32
-               return _start;
-#else
-               return ( _start.tv_sec * 1000000 + _start.tv_usec ) / 1000;
-#endif
+               _start = g_get_monotonic_time();
+               return _start / 1000;
        }
 
        /**
@@ -69,12 +62,7 @@ public:
        */
        unsigned long stop()
        {
-#ifdef _WIN32
-               _stop = (unsigned long)::GetTickCount();
-#else
-               gettimeofday ( &_stop, 0 );
-#endif
-               running = false;
+               _stop = g_get_monotonic_time();
                return elapsed();
        }
 
@@ -85,31 +73,15 @@ public:
        {
                if ( running )
                {
-#ifdef _WIN32
-                       DWORD current = ::GetTickCount();
-                       return current - _start;
-#else
-                       struct timeval current;
-                       gettimeofday ( &current, 0 );
-                       return (
-                               ( current.tv_sec * 1000000 + current.tv_usec ) - ( _start.tv_sec * 1000000 + _start.tv_usec )
-                       ) / 1000
-                       ;
-#endif
+                       uint64_t now = g_get_monotonic_time();
+                       return (now - _start) / 1000;
                }
                else
                {
-#ifdef _WIN32
-                       return _stop - _start;
-#else
-                       return (
-                               ( _stop.tv_sec * 1000000 + _stop.tv_usec ) - ( _start.tv_sec * 1000000 + _start.tv_usec )
-                       ) / 1000
-                       ;
-#endif
+                       return (_stop - _start) / 1000;
                }
        }
-       
+
        /**
                Call stop and then start. Return the value from stop.
        */
@@ -121,16 +93,12 @@ public:
        }
 
 private:
-#ifdef _WIN32
-       unsigned long _start;
-       unsigned long _stop;
-#else
-       struct timeval _start;
-       struct timeval _stop;
-#endif
+       uint64_t _start;
+       uint64_t _stop;
        bool running;
 };
 
-}
+} // Mackie namespace
+} // ArdourSurface namespace
 
 #endif