diff options
author | Lennart Poettering <lennart@poettering.net> | 2004-09-10 22:35:12 +0000 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2004-09-10 22:35:12 +0000 |
commit | 25123469d53e2ef555549984ea4e8b028c1632fb (patch) | |
tree | 4a1374c5e7ca11afff25d240b81809d23f791eb1 /polyp/util.c | |
parent | 0c99fb31826fba0ed4f904d04dd56f1df3663a3e (diff) |
add support for module search path as command line argument
protocol-native: move first data request into ack of stream creation
improve mainloop API: return the number of dispatched sources on iterate()
fix a resampling bug
introduce network latency measurement
WARNING: all these changes together may break some applications
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@189 fefdeb5f-60dc-0310-8127-8f9354f1896f
Diffstat (limited to 'polyp/util.c')
-rw-r--r-- | polyp/util.c | 54 |
1 files changed, 40 insertions, 14 deletions
diff --git a/polyp/util.c b/polyp/util.c index 408e60e9..eeb1d192 100644 --- a/polyp/util.c +++ b/polyp/util.c @@ -221,26 +221,52 @@ char *pa_get_host_name(char *s, size_t l) { return s; } -uint32_t pa_age(struct timeval *tv) { - struct timeval now; - uint32_t r; - assert(tv); +pa_usec_t pa_timeval_diff(const struct timeval *a, const struct timeval *b) { + pa_usec_t r; + assert(a && b); + + if (pa_timeval_cmp(a, b) < 0) { + const struct timeval *c; + c = a; + a = b; + b = c; + } - if (tv->tv_sec == 0) - return 0; + r = (a->tv_sec - b->tv_sec)* 1000000; - gettimeofday(&now, NULL); - - r = (now.tv_sec-tv->tv_sec) * 1000000; - - if (now.tv_usec >= tv->tv_usec) - r += now.tv_usec - tv->tv_usec; - else - r -= tv->tv_usec - now.tv_usec; + if (a->tv_usec > b->tv_usec) + r += (a->tv_usec - b->tv_usec); + else if (a->tv_usec < b->tv_usec) + r -= (b->tv_usec - a->tv_usec); return r; } +int pa_timeval_cmp(const struct timeval *a, const struct timeval *b) { + assert(a && b); + + if (a->tv_sec < b->tv_sec) + return -1; + + if (a->tv_sec > b->tv_sec) + return 1; + + if (a->tv_usec < b->tv_usec) + return -1; + + if (a->tv_usec > b->tv_usec) + return 1; + + return 0; +} + +pa_usec_t pa_age(const struct timeval *tv) { + struct timeval now; + assert(tv); + gettimeofday(&now, NULL); + return pa_timeval_diff(&now, tv); +} + #define NICE_LEVEL (-15) void pa_raise_priority(void) { |