From a97ecb8690c64a6007ad3f0e983cb8ef67b47795 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Fri, 11 Jan 2008 06:01:51 -0800 Subject: Add a timing wrapper, using gettimeofday --- CMakeLists.txt | 5 +++++ OpenAL32/Include/alMain.h | 16 ++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index a35c5dea..86fc4fd1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -132,6 +132,11 @@ ENDIF() # Check if we have Windows headers CHECK_INCLUDE_FILE(windows.h HAVE_WINDOWS_H) IF(NOT "${HAVE_WINDOWS_H}") + CHECK_FUNCTION_EXISTS(gettimeofday HAVE_GETTIMEOFDAY) + IF(NOT "${HAVE_GETTIMEOFDAY}") + MESSAGE(FATAL_ERROR "No timing function found!") + ENDIF() + # We need pthreads outside of Windows CHECK_INCLUDE_FILE(pthread.h HAVE_PTHREAD_H) IF(NOT "${HAVE_PTHREAD_H}") diff --git a/OpenAL32/Include/alMain.h b/OpenAL32/Include/alMain.h index d8611a71..adf3f2c3 100644 --- a/OpenAL32/Include/alMain.h +++ b/OpenAL32/Include/alMain.h @@ -13,6 +13,7 @@ #include #include +#include #define IsBadWritePtr(a,b) (0) @@ -52,6 +53,21 @@ static inline void DeleteCriticalSection(CRITICAL_SECTION *cs) assert(ret == 0); } +/* NOTE: This wrapper isn't quite accurate as it returns an ALuint, as opposed + * to the expected DWORD. Both are defined as unsigned 32-bit types, however. + * Additionally, Win32 is supposed to measure the time since Windows started, + * as opposed to the actual time. */ +static inline ALuint timeGetTime(void) +{ + struct timeval tv; + int ret; + + ret = gettimeofday(&tv, NULL); + assert(ret == 0); + + return tv.tv_usec/1000 + tv.tv_sec*1000; +} + #define min(x,y) (((x)<(y))?(x):(y)) #define max(x,y) (((x)>(y))?(x):(y)) #endif -- cgit v1.2.3