summaryrefslogtreecommitdiff
path: root/widget/cocoa
diff options
context:
space:
mode:
authorBrian Smith <brian@dbsoft.org>2020-11-17 06:52:06 -0600
committerBrian Smith <brian@dbsoft.org>2020-11-17 06:52:06 -0600
commit2f3cf3c8cfbd12ff10aecc2ca8205cc53c83d4eb (patch)
tree11567378bbf491dcbf0a589446415c6e53ef6c02 /widget/cocoa
parentfa5aba4c0fd68c5b629cbf8f55dba36c626ee933 (diff)
downloaduxp-2f3cf3c8cfbd12ff10aecc2ca8205cc53c83d4eb.tar.gz
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.
Diffstat (limited to 'widget/cocoa')
-rw-r--r--widget/cocoa/nsChildView.mm8
1 files changed, 7 insertions, 1 deletions
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