aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkoekeishiya <aasvi93@hotmail.com>2019-09-08 15:11:17 +0200
committerkoekeishiya <aasvi93@hotmail.com>2019-09-08 15:11:17 +0200
commita3dd7bf7dd5135ae567db7922216b4e09d51cae8 (patch)
treec67001f583ea214599cb5cbc67571ba7888aca35
parentfaff8543ffc01d3a6c017a187761c17d76afc3fa (diff)
downloadskhd-a3dd7bf7dd5135ae567db7922216b4e09d51cae8.tar.gz
skhd-a3dd7bf7dd5135ae567db7922216b4e09d51cae8.zip
change timing api
-rw-r--r--makefile2
-rw-r--r--src/timing.h32
2 files changed, 22 insertions, 12 deletions
diff --git a/makefile b/makefile
index bbf993f..62db6f4 100644
--- a/makefile
+++ b/makefile
@@ -1,4 +1,4 @@
-FRAMEWORKS = -framework Carbon -framework CoreAudio
+FRAMEWORKS = -framework Carbon -framework CoreServices
BUILD_PATH = ./bin
BUILD_FLAGS = -std=c99 -Wall -g -O0
SKHD_SRC = ./src/skhd.c
diff --git a/src/timing.h b/src/timing.h
index 44cde56..b48028e 100644
--- a/src/timing.h
+++ b/src/timing.h
@@ -2,7 +2,8 @@
#define MACOS_TIMING_H
#include <stdint.h>
-#include <CoreAudio/CoreAudio.h>
+#include <CoreServices/CoreServices.h>
+#include <mach/mach_time.h>
#define BEGIN_SCOPED_TIMED_BLOCK(note) \
do { \
@@ -28,7 +29,7 @@ struct timing_info
char *note;
uint64_t start;
uint64_t end;
- float ms;
+ double ms;
};
void begin_timing(struct timing_info *timing, char *note);
@@ -37,22 +38,31 @@ void end_timing(struct timing_info *timing);
internal inline uint64_t
macos_get_wall_clock(void)
{
- uint64_t result = AudioConvertHostTimeToNanos(AudioGetCurrentHostTime());
- return result;
+ return mach_absolute_time();
}
-internal inline float
-macos_get_seconds_elapsed(uint64_t start, uint64_t end)
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+static inline uint64_t macos_get_nanoseconds_elapsed(uint64_t start, uint64_t end)
{
- float result = ((float)(end - start) / 1000.0f) / 1000000.0f;
- return result;
+ uint64_t elapsed = end - start;
+ Nanoseconds nano = AbsoluteToNanoseconds(*(AbsoluteTime *) &elapsed);
+ return *(uint64_t *) &nano;
}
+#pragma clang diagnostic pop
-internal inline float
+internal inline double
macos_get_milliseconds_elapsed(uint64_t start, uint64_t end)
{
- float result = 1000.0f * macos_get_seconds_elapsed(start, end);
- return result;
+ uint64_t ns = macos_get_nanoseconds_elapsed(start, end);
+ return (double)(ns / 1000000.0);
+}
+
+internal inline double
+macos_get_seconds_elapsed(uint64_t start, uint64_t end)
+{
+ uint64_t ns = macos_get_nanoseconds_elapsed(start, end);
+ return (double)(ns / 1000000000.0);
}
void begin_timing(struct timing_info *timing, char *note) {