From 2f3cf3c8cfbd12ff10aecc2ca8205cc53c83d4eb Mon Sep 17 00:00:00 2001 From: Brian Smith Date: Tue, 17 Nov 2020 06:52:06 -0600 Subject: Issue #1667 - Part 3: Fix OpenGL load and runtime issues on Big Sur This fix is included in NSPR 4.27 and Mozilla bug 1652330. Also put a main thread check in the cocoa draw callback. --- widget/cocoa/nsChildView.mm | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'widget') diff --git a/widget/cocoa/nsChildView.mm b/widget/cocoa/nsChildView.mm index 95547a13ec..868687fe16 100644 --- a/widget/cocoa/nsChildView.mm +++ b/widget/cocoa/nsChildView.mm @@ -3564,10 +3564,16 @@ NSEvent* gLastDragMouseDownEvent = nil; // This method is called from mPixelHostingView's drawRect handler. - (void)doDrawRect:(NSRect)aRect { - CGContextRef cgContext = (CGContextRef)[[NSGraphicsContext currentContext] graphicsPort]; + if (!NS_IsMainThread()) { + // In the presence of CoreAnimation, this method can sometimes be called on + // a non-main thread. Ignore those calls because Gecko can only react to + // them on the main thread. + return; + } if (!mGeckoChild || !mGeckoChild->IsVisible()) return; + CGContextRef cgContext = (CGContextRef)[[NSGraphicsContext currentContext] graphicsPort]; if ([self isUsingOpenGL]) { // Since this view is usually declared as opaque, the window's pixel -- cgit v1.2.3