MacOS: Dispatch GL calls to main thread to prevent crashes on Catalina

This commit is contained in:
George Talusan 2020-01-01 21:47:55 -05:00
parent 11339d77c6
commit b1a6cbc3b4
1 changed files with 10 additions and 5 deletions

View File

@ -36,10 +36,12 @@ static bool AttachContextToView(NSOpenGLContext* context, NSView* view, u32* wid
(void)UpdateCachedDimensions(view, width, height); (void)UpdateCachedDimensions(view, width, height);
[window makeFirstResponder:view]; // the following calls can crash if not called from the main thread on macOS 10.15
[context setView:view]; dispatch_sync(dispatch_get_main_queue(), ^{
[window makeKeyAndOrderFront:nil]; [window makeFirstResponder:view];
[context setView:view];
[window makeKeyAndOrderFront:nil];
});
return true; return true;
} }
@ -140,7 +142,10 @@ void GLContextAGL::Update()
return; return;
if (UpdateCachedDimensions(m_view, &m_backbuffer_width, &m_backbuffer_height)) if (UpdateCachedDimensions(m_view, &m_backbuffer_width, &m_backbuffer_height))
[m_context update]; // the following calls can crash if not called from the main thread on macOS 10.15
dispatch_sync(dispatch_get_main_queue(), ^{
[m_context update];
});
} }
void GLContextAGL::SwapInterval(int interval) void GLContextAGL::SwapInterval(int interval)