From 256f4a6679ce4bd2cfccc66951fe716477d26382 Mon Sep 17 00:00:00 2001 From: Thomas Harte Date: Sun, 2 Feb 2020 21:29:22 -0500 Subject: [PATCH] Fixes -invalidate: cancel the dispatch source, don't just suspend it, and wait until that is done. --- .../High Precision Timer/CSHighPrecisionTimer.m | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/OSBindings/Mac/Clock Signal/High Precision Timer/CSHighPrecisionTimer.m b/OSBindings/Mac/Clock Signal/High Precision Timer/CSHighPrecisionTimer.m index 0947e5620..46a233a22 100644 --- a/OSBindings/Mac/Clock Signal/High Precision Timer/CSHighPrecisionTimer.m +++ b/OSBindings/Mac/Clock Signal/High Precision Timer/CSHighPrecisionTimer.m @@ -31,7 +31,15 @@ } - (void)invalidate { - dispatch_suspend(_timer); + NSConditionLock *lock = [[NSConditionLock alloc] initWithCondition:0]; + + dispatch_source_set_cancel_handler(_timer, ^{ + [lock lock]; + [lock unlockWithCondition:1]; + }); + + dispatch_source_cancel(_timer); + [lock lockWhenCondition:1]; } @end