From e1d964cb26817fcce326fc09f42e098a3cc9de17 Mon Sep 17 00:00:00 2001 From: Richard Jenkins Date: Thu, 4 May 2017 22:00:25 +0100 Subject: [PATCH] Implement platform_get_ticks() for macOS <10.12 --- src/openrct2/platform/shared.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/openrct2/platform/shared.c b/src/openrct2/platform/shared.c index 1c3b0c042c..bf1feff425 100644 --- a/src/openrct2/platform/shared.c +++ b/src/openrct2/platform/shared.c @@ -39,6 +39,16 @@ #include "../world/Climate.h" #include "platform.h" +#ifdef __APPLE__ + #include +#endif + +#if (defined __APPLE__ \ +&& __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 101200 \ +&& __clang_major__ >= 8) +#define MACOS_SIERRA_ONWARDS 1 +#endif + typedef void(*update_palette_func)(const uint8*, sint32, sint32); openrct2_cursor gCursorState; @@ -765,6 +775,15 @@ uint32 platform_get_ticks() { #ifdef _WIN32 return GetTickCount(); +#elif defined(__APPLE__) && !defined(MACOS_SIERRA_ONWARDS) + mach_timebase_info_data_t mach_base_info; + kern_return_t ret = mach_timebase_info(&mach_base_info); + if (ret == 0){ + return (uint32)(((mach_absolute_time() * mach_base_info.numer) / mach_base_info.denom) / 1000000); + } else{ + log_fatal("Unable to get mach_timebase_info."); + exit(-1); + } #else struct timespec ts; if (clock_gettime(CLOCK_MONOTONIC, &ts) != 0) {