From 85a75ee265ff20e1b9ac9cbe7ff0c4ff52c57dd2 Mon Sep 17 00:00:00 2001 From: Elias Naur Date: Sun, 17 May 2020 14:15:30 +0200 Subject: [PATCH] app/internal/window: [macOS] move main thread dispatching to Go Signed-off-by: Elias Naur --- app/internal/window/gl_macos.m | 4 +--- app/internal/window/os_macos.go | 7 ++++++- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/app/internal/window/gl_macos.m b/app/internal/window/gl_macos.m index 85127698..c222dff5 100644 --- a/app/internal/window/gl_macos.m +++ b/app/internal/window/gl_macos.m @@ -148,9 +148,7 @@ void gio_updateDisplayLink(CFTypeRef viewRef, CGDirectDisplayID dispID) { void gio_setAnimating(CFTypeRef viewRef, BOOL anim) { GioView *view = (__bridge GioView *)viewRef; - dispatch_async(dispatch_get_main_queue(), ^{ - [view setAnimating:anim]; - }); + [view setAnimating:anim]; } CFTypeRef gio_contextForView(CFTypeRef viewRef) { diff --git a/app/internal/window/os_macos.go b/app/internal/window/os_macos.go index 75b2a160..f10ca7ab 100644 --- a/app/internal/window/os_macos.go +++ b/app/internal/window/os_macos.go @@ -86,7 +86,12 @@ func (w *window) SetAnimating(anim bool) { if anim { animb = 1 } - C.gio_setAnimating(w.view, animb) + v := w.view + C.CFRetain(v) + runOnMain(func() { + defer C.CFRelease(v) + C.gio_setAnimating(v, animb) + }) } func (w *window) setStage(stage system.Stage) {