From 8ca3dfc9c54af540499bc70641ba745c1850e52e Mon Sep 17 00:00:00 2001 From: Thomas Harte Date: Sun, 8 May 2016 16:45:57 -0400 Subject: [PATCH] Reinstated traditional drawing logic. --- .../Mac/Clock Signal/Views/CSOpenGLView.m | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/OSBindings/Mac/Clock Signal/Views/CSOpenGLView.m b/OSBindings/Mac/Clock Signal/Views/CSOpenGLView.m index e6bf76dfd..8e41cc50e 100644 --- a/OSBindings/Mac/Clock Signal/Views/CSOpenGLView.m +++ b/OSBindings/Mac/Clock Signal/Views/CSOpenGLView.m @@ -60,7 +60,6 @@ static CVReturn DisplayLinkCallback(CVDisplayLinkRef displayLink, const CVTimeSt BOOL didSkip = _hasSkipped; dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{ [self.delegate openGLView:self didUpdateToTime:time didSkipPreviousUpdate:didSkip frequency:frequency]; - [self drawViewOnlyIfDirty:YES]; OSAtomicTestAndClear(processingMask, &_updateIsOngoing); }); _hasSkipped = NO; @@ -69,13 +68,13 @@ static CVReturn DisplayLinkCallback(CVDisplayLinkRef displayLink, const CVTimeSt // Draw the display only if a previous draw is not still ongoing. -drawViewOnlyIfDirty: is guaranteed // to be safe to call concurrently with -openGLView:updateToTime: so there's no need to worry about // the above interrupting the below or vice versa. -// if(!OSAtomicTestAndSet(drawingMask, &_updateIsOngoing)) -// { -// dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{ -// [self drawViewOnlyIfDirty:YES]; -// OSAtomicTestAndClear(drawingMask, &_updateIsOngoing); -// }); -// } + if(!OSAtomicTestAndSet(drawingMask, &_updateIsOngoing)) + { + dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{ + [self drawViewOnlyIfDirty:YES]; + OSAtomicTestAndClear(drawingMask, &_updateIsOngoing); + }); + } } - (void)invalidate @@ -135,7 +134,7 @@ static CVReturn DisplayLinkCallback(CVDisplayLinkRef displayLink, const CVTimeSt - (void)drawRect:(NSRect)dirtyRect { -// [self drawViewOnlyIfDirty:NO]; + [self drawViewOnlyIfDirty:NO]; } - (void)drawViewOnlyIfDirty:(BOOL)onlyIfDirty