From e4103dc39fe1c70c6ad40d26a01248f4b5d3887b Mon Sep 17 00:00:00 2001 From: Tom Finegan Date: Wed, 5 May 2021 12:17:28 -0700 Subject: [PATCH] draco: Fix typedef name collision w/MSVC compilers. Avoid name collisions in winsock header. Always use the DracoTimeval typedef, but map it to LARGE_INTEGER on Windows and timeval everywhere else. Fixes https://github.com/google/draco/issues/702 --- src/draco/core/cycle_timer.cc | 14 +++++++------- src/draco/core/cycle_timer.h | 7 ++++--- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/src/draco/core/cycle_timer.cc b/src/draco/core/cycle_timer.cc index 94b4b28..58df4df 100644 --- a/src/draco/core/cycle_timer.cc +++ b/src/draco/core/cycle_timer.cc @@ -17,31 +17,31 @@ namespace draco { void DracoTimer::Start() { #ifdef _WIN32 - QueryPerformanceCounter(&tv_start); + QueryPerformanceCounter(&tv_start_); #else - gettimeofday(&tv_start, nullptr); + gettimeofday(&tv_start_, nullptr); #endif } void DracoTimer::Stop() { #ifdef _WIN32 - QueryPerformanceCounter(&tv_end); + QueryPerformanceCounter(&tv_end_); #else - gettimeofday(&tv_end, nullptr); + gettimeofday(&tv_end_, nullptr); #endif } int64_t DracoTimer::GetInMs() { #ifdef _WIN32 LARGE_INTEGER elapsed = {0}; - elapsed.QuadPart = tv_end.QuadPart - tv_start.QuadPart; + elapsed.QuadPart = tv_end_.QuadPart - tv_start_.QuadPart; LARGE_INTEGER frequency = {0}; QueryPerformanceFrequency(&frequency); return elapsed.QuadPart * 1000 / frequency.QuadPart; #else - const int64_t seconds = (tv_end.tv_sec - tv_start.tv_sec) * 1000; - const int64_t milliseconds = (tv_end.tv_usec - tv_start.tv_usec) / 1000; + const int64_t seconds = (tv_end_.tv_sec - tv_start_.tv_sec) * 1000; + const int64_t milliseconds = (tv_end_.tv_usec - tv_start_.tv_usec) / 1000; return seconds + milliseconds; #endif } diff --git a/src/draco/core/cycle_timer.h b/src/draco/core/cycle_timer.h index 172f1c2..f480cc9 100644 --- a/src/draco/core/cycle_timer.h +++ b/src/draco/core/cycle_timer.h @@ -20,9 +20,10 @@ #define WIN32_LEAN_AND_MEAN #endif #include -typedef LARGE_INTEGER timeval; +typedef LARGE_INTEGER DracoTimeVal; #else #include +typedef timeval DracoTimeVal; #endif #include @@ -39,8 +40,8 @@ class DracoTimer { int64_t GetInMs(); private: - timeval tv_start; - timeval tv_end; + DracoTimeVal tv_start_; + DracoTimeVal tv_end_; }; typedef DracoTimer CycleTimer;