provide clock_gettime() implementation for lovely OSX, which doesn't have it
This commit is contained in:
parent
dfac01bdd4
commit
7b34b6a3f6
@ -541,6 +541,31 @@ ARDOUR::get_available_sync_options ()
|
|||||||
* since an arbitrary zero origin.
|
* since an arbitrary zero origin.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#ifdef __MACH__
|
||||||
|
/* Thanks Apple for not implementing this basic SUSv2, POSIX.1-2001 function
|
||||||
|
*/
|
||||||
|
#include <mach/mach_time.h>
|
||||||
|
#define CLOCK_REALTIME 0
|
||||||
|
#define CLOCK_MONOTONIC 0
|
||||||
|
int
|
||||||
|
clock_gettime (int /*clk_id*/, struct timespec *t)
|
||||||
|
{
|
||||||
|
static bool initialized = false;
|
||||||
|
static mach_timebase_info_data_t timebase;
|
||||||
|
if (!initialized) {
|
||||||
|
mach_timebase_info(&timebase);
|
||||||
|
initialized = true;
|
||||||
|
}
|
||||||
|
uint64_t time;
|
||||||
|
time = mach_absolute_time();
|
||||||
|
double nseconds = ((double)time * (double)timebase.numer)/((double)timebase.denom);
|
||||||
|
double seconds = ((double)time * (double)timebase.numer)/((double)timebase.denom * 1e9);
|
||||||
|
t->tv_sec = seconds;
|
||||||
|
t->tv_nsec = nseconds;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
microseconds_t
|
microseconds_t
|
||||||
ARDOUR::get_microseconds ()
|
ARDOUR::get_microseconds ()
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user