Issue #1905 - Part 2c - Fix OpenGL crash caused by calling [NSOpenGLContext setView:] on the Compositor thread. Starting with SDK 10.14 I believe, many functions have main thread checks, including setView: and update. So we now move the code in the updateGLContext method into doDrawRect which runs on the main thread.

This commit is contained in:
Brian Smith 2022-06-04 17:13:45 -05:00 committed by roytam1
commit 7224a17903
2 changed files with 8 additions and 13 deletions

View file

@ -3309,16 +3309,11 @@ NSEvent* gLastDragMouseDownEvent = nil;
if (!mGLContext) {
mGLContext = aGLContext;
[mGLContext retain];
mNeedsGLUpdate = true;
mNeedsGLUpdate = YES;
}
CGLLockContext((CGLContextObj)[aGLContext CGLContextObj]);
if (mNeedsGLUpdate) {
[self updateGLContext];
mNeedsGLUpdate = NO;
}
return true;
NS_OBJC_END_TRY_ABORT_BLOCK_RETURN(false);
@ -3472,12 +3467,6 @@ NSEvent* gLastDragMouseDownEvent = nil;
return YES;
}
-(void)updateGLContext
{
[mGLContext setView:mPixelHostingView];
[mGLContext update];
}
- (void)_surfaceNeedsUpdate:(NSNotification*)notification
{
if (mGLContext) {
@ -3592,6 +3581,13 @@ NSEvent* gLastDragMouseDownEvent = nil;
LayoutDeviceIntRegion region(geckoBounds);
mGeckoChild->PaintWindow(region);
if (mNeedsGLUpdate) {
[mGLContext setView:mPixelHostingView];
[mGLContext update];
mNeedsGLUpdate = NO;
}
return;
}