diff options
Diffstat (limited to 'common')
-rw-r--r-- | common/rfb/util.cxx | 16 | ||||
-rw-r--r-- | common/rfb/util.h | 5 |
2 files changed, 21 insertions, 0 deletions
diff --git a/common/rfb/util.cxx b/common/rfb/util.cxx index 265114f9..2709f2cc 100644 --- a/common/rfb/util.cxx +++ b/common/rfb/util.cxx @@ -34,6 +34,8 @@ #include <config.h> #endif +#include <sys/time.h> + #include <rfb/util.h> // Provide strcasecmp() and/or strncasecmp() if absent on this system. @@ -185,4 +187,18 @@ namespace rfb { dest[src ? destlen-1 : 0] = 0; } + unsigned msSince(const struct timeval *then) + { + struct timeval now; + unsigned diff; + + gettimeofday(&now, NULL); + + diff = (now.tv_sec - then->tv_sec) * 1000; + + diff += now.tv_usec / 1000; + diff -= then->tv_usec / 1000; + + return diff; + } }; diff --git a/common/rfb/util.h b/common/rfb/util.h index 4124769a..7d90a6b2 100644 --- a/common/rfb/util.h +++ b/common/rfb/util.h @@ -30,6 +30,8 @@ #include <limits.h> #include <string.h> +struct timeval; + namespace rfb { // -=- Class to handle cleanup of arrays of characters @@ -85,6 +87,9 @@ namespace rfb { inline int secsToMillis(int secs) { return (secs < 0 || secs > (INT_MAX/1000) ? INT_MAX : secs * 1000); } + + // Returns time elapsed since given moment in milliseconds. + unsigned msSince(const struct timeval *then); } // Some platforms (e.g. Windows) include max() and min() macros in their |