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) {