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