[vlc-commits] win32: prefer 64-bits ticks count on Vista builds
Rémi Denis-Courmont
git at videolan.org
Mon Sep 3 13:58:50 CEST 2012
vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Mon Sep 3 14:58:11 2012 +0300| [4c4fa08cff1cb21fa56a0c9caf2490900d5510ba] | committer: Rémi Denis-Courmont
win32: prefer 64-bits ticks count on Vista builds
While less precise, ticks count should be more stable than performance
counters.
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=4c4fa08cff1cb21fa56a0c9caf2490900d5510ba
---
src/win32/thread.c | 16 +++++++++++++---
1 file changed, 13 insertions(+), 3 deletions(-)
diff --git a/src/win32/thread.c b/src/win32/thread.c
index c8499f0..564a9f6 100644
--- a/src/win32/thread.c
+++ b/src/win32/thread.c
@@ -55,7 +55,7 @@ struct vlc_thread
void *data;
};
-#if (_WIN32_WINNT < 0x0601)
+#if (_WIN32_WINNT < 0x0600)
static LARGE_INTEGER freq;
#endif
static vlc_mutex_t super_mutex;
@@ -72,7 +72,7 @@ BOOL WINAPI DllMain (HINSTANCE hinstDll, DWORD fdwReason, LPVOID lpvReserved)
switch (fdwReason)
{
case DLL_PROCESS_ATTACH:
-#if (_WIN32_WINNT < 0x0601)
+#if (_WIN32_WINNT < 0x0600)
if (!QueryPerformanceFrequency (&freq))
return FALSE;
#endif
@@ -717,7 +717,17 @@ mtime_t mdate (void)
if (unlikely(!QueryUnbiasedInterruptTime (&ts)))
abort ();
- return ts / 10; /* hundreds of nanoseconds */
+ /* hundreds of nanoseconds */
+ static_assert ((10000000 % CLOCK_FREQ) == 0, "Broken frequencies ratio");
+ return ts / (10000000 / CLOCK_FREQ);
+
+#elif (_WIN32_WINNT >= 0x0600)
+ ULONGLONG ts = GetTickCount64 ();
+
+ /* milliseconds */
+ static_assert ((CLOCK_FREQ % 1000) == 0, "Broken frequencies ratio");
+ return ts * (CLOCK_FREQ / 1000);
+
#else
/* We don't need the real date, just the value of a high precision timer */
LARGE_INTEGER counter;
More information about the vlc-commits
mailing list