$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r83258 - trunk/boost/thread/win32
From: vicente.botet_at_[hidden]
Date: 2013-03-03 04:45:52
Author: viboes
Date: 2013-03-03 04:45:48 EST (Sun, 03 Mar 2013)
New Revision: 83258
URL: http://svn.boost.org/trac/boost/changeset/83258
Log:
Thread: Make use of GetTickCount64 when available
Text files modified: 
   trunk/boost/thread/win32/thread_data.hpp       |    10 +++++-----                              
   trunk/boost/thread/win32/thread_primitives.hpp |    29 +++++++++++++++++++++++++++--           
   2 files changed, 32 insertions(+), 7 deletions(-)
Modified: trunk/boost/thread/win32/thread_data.hpp
==============================================================================
--- trunk/boost/thread/win32/thread_data.hpp	(original)
+++ trunk/boost/thread/win32/thread_data.hpp	2013-03-03 04:45:48 EST (Sun, 03 Mar 2013)
@@ -165,7 +165,7 @@
 
         struct BOOST_SYMBOL_VISIBLE timeout
         {
-            unsigned long start;
+            win32::ticks_type start;
             uintmax_t milliseconds;
             bool relative;
             boost::system_time abs_time;
@@ -173,14 +173,14 @@
             static unsigned long const max_non_infinite_wait=0xfffffffe;
 
             timeout(uintmax_t milliseconds_):
-                start(win32::GetTickCount()),
+                start(win32::GetTickCount64()),
                 milliseconds(milliseconds_),
                 relative(true),
                 abs_time(boost::get_system_time())
             {}
 
             timeout(boost::system_time const& abs_time_):
-                start(win32::GetTickCount()),
+                start(win32::GetTickCount64()),
                 milliseconds(0),
                 relative(false),
                 abs_time(abs_time_)
@@ -205,8 +205,8 @@
                 }
                 else if(relative)
                 {
-                    unsigned long const now=win32::GetTickCount();
-                    unsigned long const elapsed=now-start;
+                    win32::ticks_type const now=win32::GetTickCount64();
+                    win32::ticks_type const elapsed=now-start;
                     return remaining_time((elapsed<milliseconds)?(milliseconds-elapsed):0);
                 }
                 else
Modified: trunk/boost/thread/win32/thread_primitives.hpp
==============================================================================
--- trunk/boost/thread/win32/thread_primitives.hpp	(original)
+++ trunk/boost/thread/win32/thread_primitives.hpp	2013-03-03 04:45:48 EST (Sun, 03 Mar 2013)
@@ -17,6 +17,12 @@
 #include <boost/detail/interlocked.hpp>
 #include <algorithm>
 
+#ifndef BOOST_THREAD_WIN32_HAS_GET_TICK_COUNT_64
+#if WINNT >= 0x0600
+#define BOOST_THREAD_WIN32_HAS_GET_TICK_COUNT_64
+#endif
+#endif
+
 #if defined( BOOST_USE_WINDOWS_H )
 # include <windows.h>
 
@@ -26,6 +32,11 @@
     {
         namespace win32
         {
+#ifdef BOOST_THREAD_WIN32_HAS_GET_TICK_COUNT_64
+            typedef unsigned long long ticks_type;
+#else
+            typedef unsigned long ticks_type;
+#endif
             typedef ULONG_PTR ulong_ptr;
             typedef HANDLE handle;
             unsigned const infinite=INFINITE;
@@ -61,6 +72,11 @@
             using ::Sleep;
             using ::QueueUserAPC;
             using ::GetTickCount;
+#ifdef BOOST_THREAD_WIN32_HAS_GET_TICK_COUNT_64
+            using ::GetTickCount64;
+#else
+            inline ticks_type GetTickCount64() { return GetTickCount(); }
+#endif
         }
     }
 }
@@ -88,13 +104,18 @@
 #  endif
 # endif
 
+
 namespace boost
 {
     namespace detail
     {
         namespace win32
         {
-
+#ifdef BOOST_THREAD_WIN32_HAS_GET_TICK_COUNT_64
+            typedef unsigned long long ticks_type;
+#else
+            typedef unsigned long ticks_type;
+#endif
 # ifdef _WIN64
             typedef unsigned __int64 ulong_ptr;
 # else
@@ -133,7 +154,11 @@
                 __declspec(dllimport) unsigned long __stdcall QueueUserAPC(queue_user_apc_callback_function,void*,ulong_ptr);
 
                 __declspec(dllimport) unsigned long __stdcall GetTickCount();
-
+#ifdef BOOST_THREAD_WIN32_HAS_GET_TICK_COUNT_64
+                __declspec(dllimport) ticks_type __stdcall GetTickCount64();
+#else
+                inline ticks_type GetTickCount64() { return GetTickCount(); }
+#endif
 # ifndef UNDER_CE
                 __declspec(dllimport) unsigned long __stdcall GetCurrentProcessId();
                 __declspec(dllimport) unsigned long __stdcall GetCurrentThreadId();