diff options
-rw-r--r-- | src/pulse/def.h | 1 | ||||
-rw-r--r-- | src/pulse/mainloop-api.h | 1 | ||||
-rw-r--r-- | src/pulse/rtclock.c | 2 | ||||
-rw-r--r-- | src/pulse/timeval.c | 15 | ||||
-rw-r--r-- | src/pulsecore/authkey.c | 1 | ||||
-rw-r--r-- | src/pulsecore/core-rtclock.c | 30 | ||||
-rw-r--r-- | src/pulsecore/core-util.c | 2 | ||||
-rw-r--r-- | src/pulsecore/memblockq.c | 2 | ||||
-rw-r--r-- | src/pulsecore/tagstruct.h | 1 |
9 files changed, 36 insertions, 19 deletions
diff --git a/src/pulse/def.h b/src/pulse/def.h index 4a8da137..ac4ae538 100644 --- a/src/pulse/def.h +++ b/src/pulse/def.h @@ -25,7 +25,6 @@ #include <inttypes.h> #include <sys/time.h> -#include <time.h> #include <pulse/cdecl.h> #include <pulse/sample.h> diff --git a/src/pulse/mainloop-api.h b/src/pulse/mainloop-api.h index aa0d5e73..0ce2219b 100644 --- a/src/pulse/mainloop-api.h +++ b/src/pulse/mainloop-api.h @@ -24,7 +24,6 @@ ***/ #include <sys/time.h> -#include <time.h> #include <pulse/cdecl.h> #include <pulse/sample.h> diff --git a/src/pulse/rtclock.c b/src/pulse/rtclock.c index 49ff6aae..baa0f3a5 100644 --- a/src/pulse/rtclock.c +++ b/src/pulse/rtclock.c @@ -23,10 +23,10 @@ #include <config.h> #endif +#include <pulse/timeval.h> #include <pulsecore/core-rtclock.h> #include "rtclock.h" -#include "timeval.h" pa_usec_t pa_rtclock_now(void) { struct timeval tv; diff --git a/src/pulse/timeval.c b/src/pulse/timeval.c index c4a08419..10ba322f 100644 --- a/src/pulse/timeval.c +++ b/src/pulse/timeval.c @@ -37,29 +37,22 @@ #include "timeval.h" struct timeval *pa_gettimeofday(struct timeval *tv) { -#ifdef HAVE_GETTIMEOFDAY pa_assert(tv); - pa_assert_se(gettimeofday(tv, NULL) == 0); - return tv; -#elif defined(OS_IS_WIN32) +#if defined(OS_IS_WIN32) /* * Copied from implementation by Steven Edwards (LGPL). * Found on wine mailing list. */ - #if defined(_MSC_VER) || defined(__BORLANDC__) #define EPOCHFILETIME (116444736000000000i64) #else #define EPOCHFILETIME (116444736000000000LL) #endif - FILETIME ft; LARGE_INTEGER li; int64_t t; - pa_assert(tv); - GetSystemTimeAsFileTime(&ft); li.LowPart = ft.dwLowDateTime; li.HighPart = ft.dwHighDateTime; @@ -68,11 +61,13 @@ struct timeval *pa_gettimeofday(struct timeval *tv) { t /= 10; /* In microseconds */ tv->tv_sec = (time_t) (t / PA_USEC_PER_SEC); tv->tv_usec = (suseconds_t) (t % PA_USEC_PER_SEC); - - return tv; +#elif defined(HAVE_GETTIMEOFDAY) + pa_assert_se(gettimeofday(tv, NULL) == 0); #else #error "Platform lacks gettimeofday() or equivalent function." #endif + + return tv; } pa_usec_t pa_timeval_diff(const struct timeval *a, const struct timeval *b) { diff --git a/src/pulsecore/authkey.c b/src/pulsecore/authkey.c index 684bc010..92509d89 100644 --- a/src/pulsecore/authkey.c +++ b/src/pulsecore/authkey.c @@ -31,7 +31,6 @@ #include <stdio.h> #include <inttypes.h> #include <stdlib.h> -#include <time.h> #include <limits.h> #include <sys/stat.h> diff --git a/src/pulsecore/core-rtclock.c b/src/pulsecore/core-rtclock.c index a69b466f..ac2c097a 100644 --- a/src/pulsecore/core-rtclock.c +++ b/src/pulsecore/core-rtclock.c @@ -40,12 +40,20 @@ #include <unistd.h> #endif +#ifdef HAVE_WINDOWS_H +#include <windows.h> +#endif + #include <pulse/timeval.h> #include <pulsecore/macro.h> #include <pulsecore/core-error.h> #include "core-rtclock.h" +#ifdef OS_IS_WIN32 +static int64_t counter_freq = 0; +#endif + pa_usec_t pa_rtclock_age(const struct timeval *tv) { struct timeval now; pa_assert(tv); @@ -88,6 +96,17 @@ struct timeval *pa_rtclock_get(struct timeval *tv) { tv->tv_usec = ts.tv_nsec / PA_NSEC_PER_USEC; return tv; +#elif defined(OS_IS_WIN32) + if (counter_freq > 0) { + LARGE_INTEGER count; + + pa_assert_se(QueryPerformanceCounter(&count)); + + tv->tv_sec = count.QuadPart / counter_freq; + tv->tv_usec = (count.QuadPart % counter_freq) * PA_USEC_PER_SEC / counter_freq; + + return tv; + } #endif /* HAVE_CLOCK_GETTIME */ return pa_gettimeofday(tv); @@ -118,6 +137,11 @@ pa_bool_t pa_rtclock_hrtimer(void) { pa_assert_se(clock_getres(CLOCK_REALTIME, &ts) == 0); return ts.tv_sec == 0 && ts.tv_nsec <= (long) (PA_HRTIMER_THRESHOLD_USEC*PA_NSEC_PER_USEC); +#elif defined(OS_IS_WIN32) + + if (counter_freq > 0) + return counter_freq >= (int64_t) (PA_USEC_PER_SEC/PA_HRTIMER_THRESHOLD_USEC); + #endif /* HAVE_CLOCK_GETTIME */ return FALSE; @@ -148,6 +172,12 @@ void pa_rtclock_hrtimer_enable(void) { } } +#elif defined(OS_IS_WIN32) + LARGE_INTEGER freq; + + pa_assert_se(QueryPerformanceFrequency(&freq)); + counter_freq = freq.QuadPart; + #endif } diff --git a/src/pulsecore/core-util.c b/src/pulsecore/core-util.c index 04a2341f..8a377e37 100644 --- a/src/pulsecore/core-util.c +++ b/src/pulsecore/core-util.c @@ -34,11 +34,9 @@ #include <fcntl.h> #include <unistd.h> #include <limits.h> -#include <time.h> #include <ctype.h> #include <sys/types.h> #include <sys/stat.h> -#include <sys/time.h> #include <dirent.h> #ifdef HAVE_LANGINFO_H diff --git a/src/pulsecore/memblockq.c b/src/pulsecore/memblockq.c index c7840484..11faedac 100644 --- a/src/pulsecore/memblockq.c +++ b/src/pulsecore/memblockq.c @@ -23,8 +23,6 @@ #include <config.h> #endif -#include <sys/time.h> -#include <time.h> #include <stdio.h> #include <stdlib.h> #include <string.h> diff --git a/src/pulsecore/tagstruct.h b/src/pulsecore/tagstruct.h index 1a99e924..b6553ada 100644 --- a/src/pulsecore/tagstruct.h +++ b/src/pulsecore/tagstruct.h @@ -25,7 +25,6 @@ #include <inttypes.h> #include <sys/types.h> #include <sys/time.h> -#include <time.h> #include <pulse/sample.h> #include <pulse/channelmap.h> |